|
@@ -4,6 +4,7 @@ import (
|
|
|
"encoding/json"
|
|
|
"eta/eta_index_lib/logic"
|
|
|
"eta/eta_index_lib/models"
|
|
|
+ "eta/eta_index_lib/services"
|
|
|
"eta/eta_index_lib/utils"
|
|
|
"fmt"
|
|
|
"strconv"
|
|
@@ -35,14 +36,14 @@ func (this *PredictCalculateController) Save() {
|
|
|
return
|
|
|
}
|
|
|
if req.EdbInfoId <= 0 {
|
|
|
- addPredictCalculate(br, req)
|
|
|
+ addPredictCalculate(br, req, this.Lang)
|
|
|
} else {
|
|
|
- editPredictCalculate(br, req)
|
|
|
+ editPredictCalculate(br, req, this.Lang)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// AddPredictCalculate 添加预测指标运算
|
|
|
-func addPredictCalculate(br *models.BaseResponse, req models.EdbInfoCalculateSaveReq) {
|
|
|
+func addPredictCalculate(br *models.BaseResponse, req models.EdbInfoCalculateSaveReq, lang string) {
|
|
|
|
|
|
req.EdbName = strings.Trim(req.EdbName, " ")
|
|
|
if req.EdbName == "" {
|
|
@@ -125,25 +126,17 @@ func addPredictCalculate(br *models.BaseResponse, req models.EdbInfoCalculateSav
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // 判断指标名称是否存在
|
|
|
- {
|
|
|
- var condition string
|
|
|
- var pars []interface{}
|
|
|
- // 指标类型,0:普通指标,1:预测指标
|
|
|
- condition += " AND edb_info_type=? AND edb_name=? "
|
|
|
- pars = append(pars, 1, req.EdbName)
|
|
|
-
|
|
|
- count, err := models.GetEdbInfoCountByCondition(condition, pars)
|
|
|
- if err != nil {
|
|
|
- br.Msg = "判断指标名称是否存在失败"
|
|
|
- br.ErrMsg = "判断指标名称是否存在失败,Err:" + err.Error()
|
|
|
- return
|
|
|
- }
|
|
|
- if count > 0 {
|
|
|
- br.Msg = "指标名称已存在,请重新填写"
|
|
|
- br.ErrMsg = "指标名称已存在,请重新填写"
|
|
|
- return
|
|
|
- }
|
|
|
+ // 根据指标名称和指标ID校验库中是否还存在其他同名指标
|
|
|
+ existEdbName, err := services.CheckExistByEdbNameAndEdbInfoId(1, 0, req.EdbName, lang)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "判断指标名称是否存在失败"
|
|
|
+ br.ErrMsg = "判断指标名称是否存在失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if existEdbName {
|
|
|
+ br.Msg = "指标名称已存在,请重新填写"
|
|
|
+ br.ErrMsg = "指标名称已存在,请重新填写"
|
|
|
+ return
|
|
|
}
|
|
|
|
|
|
// 关联指标信息
|
|
@@ -225,6 +218,8 @@ func addPredictCalculate(br *models.BaseResponse, req models.EdbInfoCalculateSav
|
|
|
EmptyType: req.EmptyType,
|
|
|
MaxEmptyType: req.MaxEmptyType,
|
|
|
Extra: req.Extra,
|
|
|
+ EdbNameEn: req.EdbName,
|
|
|
+ UnitEn: req.Unit,
|
|
|
}
|
|
|
edbInfoId, err := models.AddEdbInfo(edbInfo)
|
|
|
if err != nil {
|
|
@@ -294,7 +289,7 @@ func addPredictCalculate(br *models.BaseResponse, req models.EdbInfoCalculateSav
|
|
|
}
|
|
|
|
|
|
// editPredictCalculate 编辑预测指标运算
|
|
|
-func editPredictCalculate(br *models.BaseResponse, req models.EdbInfoCalculateSaveReq) {
|
|
|
+func editPredictCalculate(br *models.BaseResponse, req models.EdbInfoCalculateSaveReq, lang string) {
|
|
|
req.EdbName = strings.Trim(req.EdbName, " ")
|
|
|
if req.EdbName == "" {
|
|
|
br.Msg = "指标名称不能为空"
|
|
@@ -383,25 +378,18 @@ func editPredictCalculate(br *models.BaseResponse, req models.EdbInfoCalculateSa
|
|
|
br.ErrMsg = "获取指标信息失败,Err:" + err.Error()
|
|
|
return
|
|
|
}
|
|
|
- // 判断指标名称是否存在
|
|
|
- {
|
|
|
- var condition string
|
|
|
- var pars []interface{}
|
|
|
- // 指标类型,0:普通指标,1:预测指标
|
|
|
- condition += " AND edb_info_id !=? AND edb_info_type=? AND edb_name=? "
|
|
|
- pars = append(pars, edbInfo.EdbInfoId, edbInfo.EdbInfoType, req.EdbName)
|
|
|
|
|
|
- count, err := models.GetEdbInfoCountByCondition(condition, pars)
|
|
|
- if err != nil {
|
|
|
- br.Msg = "判断指标名称是否存在失败"
|
|
|
- br.ErrMsg = "判断指标名称是否存在失败,Err:" + err.Error()
|
|
|
- return
|
|
|
- }
|
|
|
- if count > 0 {
|
|
|
- br.Msg = "指标名称已存在,请重新填写"
|
|
|
- br.ErrMsg = "指标名称已存在,请重新填写"
|
|
|
- return
|
|
|
- }
|
|
|
+ // 根据指标名称和指标ID校验库中是否还存在其他同名指标
|
|
|
+ existEdbName, err := services.CheckExistByEdbNameAndEdbInfoId(edbInfo.EdbInfoType, edbInfo.EdbInfoId, req.EdbName, lang)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "判断指标名称是否存在失败"
|
|
|
+ br.ErrMsg = "判断指标名称是否存在失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if existEdbName {
|
|
|
+ br.Msg = "指标名称已存在,请重新填写"
|
|
|
+ br.ErrMsg = "指标名称已存在,请重新填写"
|
|
|
+ return
|
|
|
}
|
|
|
|
|
|
// 关联指标信息
|
|
@@ -478,9 +466,15 @@ func editPredictCalculate(br *models.BaseResponse, req models.EdbInfoCalculateSa
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- edbInfo.EdbName = req.EdbName
|
|
|
+ switch lang {
|
|
|
+ case utils.EnLangVersion:
|
|
|
+ edbInfo.EdbNameEn = req.EdbName
|
|
|
+ edbInfo.UnitEn = req.Unit
|
|
|
+ default:
|
|
|
+ edbInfo.EdbName = req.EdbName
|
|
|
+ edbInfo.Unit = req.Unit
|
|
|
+ }
|
|
|
edbInfo.Frequency = req.Frequency
|
|
|
- edbInfo.Unit = req.Unit
|
|
|
edbInfo.ClassifyId = req.ClassifyId
|
|
|
edbInfo.CalculateFormula = req.CalculateFormula
|
|
|
edbInfo.EmptyType = req.EmptyType
|
|
@@ -584,24 +578,14 @@ func (this *PredictCalculateController) CalculateBatchSave() {
|
|
|
}
|
|
|
//加入缓存机制,避免创建同一个名称的指标 end
|
|
|
|
|
|
- var condition string
|
|
|
- var pars []interface{}
|
|
|
- condition += " AND edb_name=? "
|
|
|
- pars = append(pars, req.EdbName)
|
|
|
-
|
|
|
- if req.EdbInfoId > 0 {
|
|
|
- condition += " AND edb_info_id !=? "
|
|
|
- pars = append(pars, req.EdbInfoId)
|
|
|
- }
|
|
|
-
|
|
|
- count, err := models.GetEdbInfoCountByCondition(condition, pars)
|
|
|
+ // 根据指标名称和指标ID校验库中是否还存在其他同名指标
|
|
|
+ existEdbName, err := services.CheckExistByEdbNameAndEdbInfoId(1, req.EdbInfoId, req.EdbName, this.Lang)
|
|
|
if err != nil {
|
|
|
br.Msg = "判断指标名称是否存在失败"
|
|
|
br.ErrMsg = "判断指标名称是否存在失败,Err:" + err.Error()
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
- if count > 0 {
|
|
|
+ if existEdbName {
|
|
|
br.Msg = "指标名称已存在,请重新填写"
|
|
|
br.ErrMsg = "指标名称已存在,请重新填写"
|
|
|
return
|
|
@@ -719,6 +703,7 @@ func (this *PredictCalculateController) CalculateBatchSave() {
|
|
|
UniqueCode: uniqueCode,
|
|
|
SysUserId: req.AdminId,
|
|
|
SysUserRealName: req.AdminName,
|
|
|
+ Lang: this.Lang,
|
|
|
}
|
|
|
|
|
|
if req.Source == utils.DATA_SOURCE_PREDICT_CALCULATE_TBZ {
|
|
@@ -746,13 +731,13 @@ func (this *PredictCalculateController) CalculateBatchSave() {
|
|
|
}
|
|
|
}
|
|
|
sourName = "预测同差"
|
|
|
- edbInfo, latestDateStr, latestValue, err, errMsg = models.SavePredictCalculateTcz(req.EdbInfoId, req.ClassifyId, req.EdbName, req.Frequency, req.Unit, req.Formula, fromEdbInfo, edbCode, uniqueCode, adminId, adminName)
|
|
|
+ edbInfo, latestDateStr, latestValue, err, errMsg = models.SavePredictCalculateTcz(req.EdbInfoId, req.ClassifyId, req.EdbName, req.Frequency, req.Unit, req.Formula, fromEdbInfo, edbCode, uniqueCode, adminId, adminName, this.Lang)
|
|
|
} else if req.Source == utils.DATA_SOURCE_PREDICT_CALCULATE_NSZYDPJJS {
|
|
|
sourName = "预测N数值移动平均计算"
|
|
|
- edbInfo, latestDateStr, latestValue, err, errMsg = models.SavePredictCalculateNszydpjjs(req.EdbInfoId, req.ClassifyId, req.EdbName, req.Frequency, req.Unit, req.Formula, fromEdbInfo, edbCode, uniqueCode, adminId, adminName)
|
|
|
+ edbInfo, latestDateStr, latestValue, err, errMsg = models.SavePredictCalculateNszydpjjs(req.EdbInfoId, req.ClassifyId, req.EdbName, req.Frequency, req.Unit, req.Formula, fromEdbInfo, edbCode, uniqueCode, adminId, adminName, this.Lang)
|
|
|
} else if req.Source == utils.DATA_SOURCE_PREDICT_CALCULATE_BP {
|
|
|
sourName = "预测变频"
|
|
|
- edbInfo, latestDateStr, latestValue, err = models.SavePredictCalculateBp(&req, fromEdbInfo, edbCode, uniqueCode, adminId, adminName)
|
|
|
+ edbInfo, latestDateStr, latestValue, err = models.SavePredictCalculateBp(&req, fromEdbInfo, edbCode, uniqueCode, adminId, adminName, this.Lang)
|
|
|
} else if req.Source == utils.DATA_SOURCE_PREDICT_CALCULATE_HBZ {
|
|
|
checkDataList, tmpErr := models.GetPredictEdbDataListAllByStartDate(fromEdbInfo, 0, "")
|
|
|
if tmpErr != nil && tmpErr.Error() != utils.ErrNoRow() {
|
|
@@ -768,23 +753,23 @@ func (this *PredictCalculateController) CalculateBatchSave() {
|
|
|
}
|
|
|
}
|
|
|
sourName = "预测环比值"
|
|
|
- edbInfo, latestDateStr, latestValue, err = models.SavePredictCalculateHbz(&req, fromEdbInfo, edbCode, uniqueCode, adminId, adminName, formulaInt)
|
|
|
+ edbInfo, latestDateStr, latestValue, err = models.SavePredictCalculateHbz(&req, fromEdbInfo, edbCode, uniqueCode, adminId, adminName, formulaInt, this.Lang)
|
|
|
} else if req.Source == utils.DATA_SOURCE_PREDICT_CALCULATE_HCZ {
|
|
|
sourName = "预测环差值"
|
|
|
- edbInfo, latestDateStr, latestValue, err = models.SavePredictCalculateHcz(&req, fromEdbInfo, edbCode, uniqueCode, adminId, adminName, formulaInt)
|
|
|
+ edbInfo, latestDateStr, latestValue, err = models.SavePredictCalculateHcz(&req, fromEdbInfo, edbCode, uniqueCode, adminId, adminName, formulaInt, this.Lang)
|
|
|
} else if req.Source == utils.DATA_SOURCE_PREDICT_CALCULATE_LJZZY {
|
|
|
sourName = "预测累计值转月值"
|
|
|
if fromEdbInfo.Frequency != "月度" {
|
|
|
br.Msg = "请选择月度指标"
|
|
|
return
|
|
|
}
|
|
|
- edbInfo, latestDateStr, latestValue, err = models.SavePredictCalculateLjzzy(&req, fromEdbInfo, edbCode, uniqueCode, adminId, adminName)
|
|
|
+ edbInfo, latestDateStr, latestValue, err = models.SavePredictCalculateLjzzy(&req, fromEdbInfo, edbCode, uniqueCode, adminId, adminName, this.Lang)
|
|
|
} else if req.Source == utils.DATA_SOURCE_PREDICT_CALCULATE_TIME_SHIFT {
|
|
|
sourName = "预测时间移位"
|
|
|
- edbInfo, latestDateStr, latestValue, err = models.SavePredictCalculateTimeShift(&req, fromEdbInfo, edbCode, uniqueCode, adminId, adminName)
|
|
|
+ edbInfo, latestDateStr, latestValue, err = models.SavePredictCalculateTimeShift(&req, fromEdbInfo, edbCode, uniqueCode, adminId, adminName, this.Lang)
|
|
|
} else if req.Source == utils.DATA_SOURCE_PREDICT_CALCULATE_CJJX {
|
|
|
sourName = "预测超季节性"
|
|
|
- edbInfo, latestDateStr, latestValue, err = models.SavePredictCalculateCjjx(&req, fromEdbInfo, edbCode, uniqueCode, adminId, adminName, formulaInt)
|
|
|
+ edbInfo, latestDateStr, latestValue, err = models.SavePredictCalculateCjjx(&req, fromEdbInfo, edbCode, uniqueCode, adminId, adminName, formulaInt, this.Lang)
|
|
|
} else if req.Source == utils.DATA_SOURCE_PREDICT_CALCULATE_NHCC {
|
|
|
sourName = "预测拟合残差"
|
|
|
secondEdbInfoReq := req.EdbInfoIdArr[1]
|
|
@@ -800,16 +785,16 @@ func (this *PredictCalculateController) CalculateBatchSave() {
|
|
|
br.ErrMsg = "两个指标不允许为同一个"
|
|
|
return
|
|
|
}
|
|
|
- edbInfo, latestDateStr, latestValue, err = models.SavePredictCalculateNhcc(&req, fromEdbInfo, secondEdbInfo, edbCode, uniqueCode, nhccDate, adminId, adminName)
|
|
|
+ edbInfo, latestDateStr, latestValue, err = models.SavePredictCalculateNhcc(&req, fromEdbInfo, secondEdbInfo, edbCode, uniqueCode, nhccDate, adminId, adminName, this.Lang)
|
|
|
} else if req.Source == utils.DATA_SOURCE_PREDICT_CALCULATE_JP {
|
|
|
sourName = utils.DATA_SOURCE_NAME_PREDICT_CALCULATE_JP
|
|
|
- edbInfo, latestDateStr, latestValue, err, errMsg = models.SavePredictCalculateJp(req.EdbInfoId, req.ClassifyId, req.EdbName, req.Frequency, req.Unit, req.Formula, fromEdbInfo, edbCode, uniqueCode, adminId, adminName)
|
|
|
+ edbInfo, latestDateStr, latestValue, err, errMsg = models.SavePredictCalculateJp(req.EdbInfoId, req.ClassifyId, req.EdbName, req.Frequency, req.Unit, req.Formula, fromEdbInfo, edbCode, uniqueCode, adminId, adminName, this.Lang)
|
|
|
} else if req.Source == utils.DATA_SOURCE_PREDICT_CALCULATE_NH {
|
|
|
sourName = utils.DATA_SOURCE_NAME_PREDICT_CALCULATE_NH
|
|
|
- edbInfo, latestDateStr, latestValue, err, errMsg = models.SavePredictCalculateNh(req.EdbInfoId, req.ClassifyId, req.EdbName, req.Frequency, req.Unit, req.Formula, fromEdbInfo, edbCode, uniqueCode, adminId, adminName)
|
|
|
+ edbInfo, latestDateStr, latestValue, err, errMsg = models.SavePredictCalculateNh(req.EdbInfoId, req.ClassifyId, req.EdbName, req.Frequency, req.Unit, req.Formula, fromEdbInfo, edbCode, uniqueCode, adminId, adminName, this.Lang)
|
|
|
} else if req.Source == utils.DATA_SOURCE_PREDICT_CALCULATE_KSZS {
|
|
|
sourName = utils.DATA_SOURCE_NAME_PREDICT_CALCULATE_KSZS
|
|
|
- edbInfo, latestDateStr, latestValue, err, errMsg = models.SavePredictCalculateKszs(req.EdbInfoId, req.ClassifyId, req.EdbName, req.Frequency, req.Unit, req.Formula, req.EdbInfoIdArr, edbCode, uniqueCode, adminId, adminName)
|
|
|
+ edbInfo, latestDateStr, latestValue, err, errMsg = models.SavePredictCalculateKszs(req.EdbInfoId, req.ClassifyId, req.EdbName, req.Frequency, req.Unit, req.Formula, req.EdbInfoIdArr, edbCode, uniqueCode, adminId, adminName, this.Lang)
|
|
|
} else {
|
|
|
// 获取通用的数据源处理服务
|
|
|
baseEdbInfoModel = models.GetBasePredictEdbInfoModel(req.Source)
|