Browse Source

fix:eta指标库新增编辑添加英文名称

Roc 10 months ago
parent
commit
37bf67cbbb

+ 10 - 0
controllers/base_auth.go

@@ -30,6 +30,7 @@ func init() {
 
 type BaseAuthController struct {
 	web.Controller
+	Lang string `description:"当前语言类型,中文:zh;英文:en;默认:zh"`
 }
 
 func (this *BaseAuthController) Prepare() {
@@ -39,6 +40,15 @@ func (this *BaseAuthController) Prepare() {
 	fmt.Println("Url:", uri)
 	if method != "HEAD" {
 		if method == "POST" {
+			// 当前语言
+			{
+				lang := this.Ctx.Input.Header("Lang")
+				if lang == "" {
+					lang = utils.ZhLangVersion
+				}
+				this.Lang = lang
+			}
+
 			authorization := this.Ctx.Input.Header("authorization")
 			if authorization == "" {
 				this.JSON(models.BaseResponse{Ret: 408, Msg: "请重新授权!", ErrMsg: "请重新授权:authorization is empty "}, false, false)

+ 22 - 0
controllers/base_common.go

@@ -13,6 +13,28 @@ import (
 
 type BaseCommonController struct {
 	web.Controller
+	Lang string `description:"当前语言类型,中文:zh;英文:en;默认:zh"`
+}
+
+func (c *BaseCommonController) Prepare() {
+	//var requestBody string
+	//method := c.Ctx.Input.Method()
+	//if method == "GET" {
+	//	requestBody = c.Ctx.Request.RequestURI
+	//} else {
+	//	requestBody, _ = url.QueryUnescape(string(c.Ctx.Input.RequestBody))
+	//}
+	// 当前语言
+	{
+		lang := c.Ctx.Input.Header("Lang")
+		if lang == "" {
+			lang = utils.ZhLangVersion
+		}
+		c.Lang = lang
+	}
+
+	//ip := c.Ctx.Input.IP()
+	//utils.ApiLog.Info("uri:%s, requestBody:%s, responseBody:%s, ip:%s", c.Ctx.Input.URI(), requestBody, ip)
 }
 
 func (c *BaseCommonController) ServeJSON(encoding ...bool) {

+ 24 - 30
controllers/base_from_calculate.go

@@ -85,7 +85,7 @@ func (this *CalculateController) Add() {
 	}
 
 	// 新增
-	edbInfo, uniqueCode, err, errMsg := services.EdbCalculateAdd(req)
+	edbInfo, uniqueCode, err, errMsg := services.EdbCalculateAdd(req, this.Lang)
 	if err != nil {
 		br.Msg = err.Error()
 		br.ErrMsg = errMsg
@@ -222,22 +222,14 @@ func (this *CalculateController) Edit() {
 		req.EdbInfoIdArr = newEdbInfoIdArr
 	}
 
-	var condition string
-	var pars []interface{}
-	condition += " AND edb_name=? "
-	pars = append(pars, req.EdbName)
-
-	condition += " AND edb_info_id<>? "
-	pars = append(pars, req.EdbInfoId)
-
-	count, err := models.GetEdbInfoCountByCondition(condition, pars)
+	// 根据指标名称和指标ID校验库中是否还存在其他同名指标
+	existEdbName, err := services.CheckExistByEdbNameAndEdbInfoId(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 = "指标名称已存在,请重新填写"
 		br.IsSendEmail = false
@@ -309,6 +301,19 @@ func (this *CalculateController) Edit() {
 		}
 	}
 
+	// 额外赋值
+	switch this.Lang {
+	case utils.EnLangVersion:
+		req.EdbNameEn = req.EdbName
+		req.UnitEn = req.Unit
+
+		req.EdbName = edbInfoDetail.EdbName
+		req.Unit = edbInfoDetail.Unit
+	default:
+		req.EdbNameEn = edbInfoDetail.EdbNameEn
+		req.UnitEn = edbInfoDetail.UnitEn
+	}
+
 	//重新计算
 	err, errMsg := models.EditCalculateInfo(edbInfoDetail, req, formulaSlice, edbInfoIdBytes, needCalculate)
 	if err != nil {
@@ -479,19 +484,15 @@ func (this *CalculateController) BatchSave() {
 	}
 	//加入缓存机制,避免创建同一个名称的指标 end
 
-	var condition string
-	var pars []interface{}
-	condition += " AND edb_name=? "
-	pars = append(pars, req.EdbName)
-
-	count, err := models.GetEdbInfoCountByCondition(condition, pars)
+	// 根据指标名称和指标ID校验库中是否还存在其他同名指标
+	existEdbName, err := services.CheckExistByEdbNameAndEdbInfoId(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 = "指标名称已存在,请重新填写"
 		br.IsSendEmail = false
@@ -835,22 +836,15 @@ func (this *CalculateController) BatchEdit() {
 		return
 	}
 
-	var condition string
-	var pars []interface{}
-	condition += " AND edb_name=? "
-	pars = append(pars, req.EdbName)
-
-	condition += " AND edb_info_id<>? "
-	pars = append(pars, req.EdbInfoId)
-
-	count, err := models.GetEdbInfoCountByCondition(condition, pars)
+	// 根据指标名称和指标ID校验库中是否还存在其他同名指标
+	existEdbName, err := services.CheckExistByEdbNameAndEdbInfoId(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 = "指标名称已存在,请重新填写"
 		br.IsSendEmail = false
@@ -2167,7 +2161,7 @@ func (this *CalculateController) BatchSaveMulti() {
 				wg.Done()
 			}()
 
-			edbInfo, uniqueCode, err, errMsg = services.EdbCalculateBatchSave(reqItem)
+			edbInfo, uniqueCode, err, errMsg = services.EdbCalculateBatchSave(reqItem, this.Lang)
 			return
 		}()
 	}

+ 6 - 2
models/base_from_calculate.go

@@ -19,8 +19,10 @@ type EdbInfoCalculateSaveReq struct {
 	AdminName        string `description:"添加人名称"`
 	EdbInfoId        int    `description:"指标id"`
 	EdbName          string `description:"指标名称"`
+	EdbNameEn        string `description:"英文指标名称"`
 	Frequency        string `description:"频率"`
 	Unit             string `description:"单位"`
+	UnitEn           string `description:"英文单位"`
 	ClassifyId       int    `description:"分类id"`
 	CalculateFormula string `description:"计算公式"`
 	EmptyType        int    `description:"空值处理类型(0查找前后35天,1不计算,2前值填充,3后值填充,4等于0)"`
@@ -85,8 +87,8 @@ func AddCalculateInfo(req EdbInfoCalculateSaveReq, calculateMappingList []*EdbIn
 		NoUpdate:         0,
 		ServerUrl:        "",
 		EdbInfoType:      0,
-		EdbNameEn:        "",
-		UnitEn:           "",
+		EdbNameEn:        req.EdbName,
+		UnitEn:           req.Unit,
 		LatestDate:       "",
 		LatestValue:      0,
 		ChartImage:       "",
@@ -139,9 +141,11 @@ func EditCalculateInfo(edbInfo *EdbInfo, req EdbInfoCalculateSaveReq, formulaSli
 
 	// 修改指标信息
 	edbInfo.EdbName = req.EdbName
+	edbInfo.EdbNameEn = req.EdbNameEn
 	edbInfo.EdbNameSource = req.EdbName
 	edbInfo.Frequency = req.Frequency
 	edbInfo.Unit = req.Unit
+	edbInfo.UnitEn = req.UnitEn
 	edbInfo.ClassifyId = req.ClassifyId
 	edbInfo.CalculateFormula = req.CalculateFormula
 	edbInfo.ModifyTime = time.Now()

+ 2 - 0
models/edb_data_calculate_avg.go

@@ -56,6 +56,8 @@ func (obj CalculateAvg) Add(params AddCalculateBatchParams) (edbInfo *EdbInfo, e
 	edbInfo.EmptyType = req.EmptyType
 	edbInfo.MaxEmptyType = req.MaxEmptyType
 	edbInfo.Extra = req.Extra
+	edbInfo.EdbNameEn = req.EdbName
+	edbInfo.UnitEn = req.Unit
 	newEdbInfoId, tmpErr := to.Insert(edbInfo)
 	if tmpErr != nil {
 		err = tmpErr

+ 2 - 0
models/edb_data_calculate_bp.go

@@ -42,6 +42,8 @@ func AddCalculateBp(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edb
 		edbInfo.ModifyTime = time.Now()
 		edbInfo.UniqueCode = uniqueCode
 		edbInfo.CalculateFormula = req.Formula
+		edbInfo.EdbNameEn = req.EdbName
+		edbInfo.UnitEn = req.Unit
 		edbInfo.EdbType = 2
 		newEdbInfoId, tmpErr := to.Insert(edbInfo)
 		if tmpErr != nil {

+ 2 - 0
models/edb_data_calculate_cjjx.go

@@ -45,6 +45,8 @@ func AddCalculateCjjx(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, e
 		edbInfo.UniqueCode = uniqueCode
 		edbInfo.CalculateFormula = req.Formula
 		edbInfo.Calendar = req.Calendar
+		edbInfo.EdbNameEn = req.EdbName
+		edbInfo.UnitEn = req.Unit
 		edbInfo.EdbType = 2
 		newEdbInfoId, tmpErr := to.Insert(edbInfo)
 		if tmpErr != nil {

+ 2 - 0
models/edb_data_calculate_correlation.go

@@ -47,6 +47,8 @@ func AddCalculateCorrelation(req *EdbInfoCalculateBatchSaveReq, edbCode, uniqueC
 	edbInfo.ModifyTime = time.Now()
 	edbInfo.UniqueCode = uniqueCode
 	edbInfo.CalculateFormula = req.Formula
+	edbInfo.EdbNameEn = req.EdbName
+	edbInfo.UnitEn = req.Unit
 	edbInfo.EdbType = 2
 	newEdbInfoId, tmpErr := to.Insert(edbInfo)
 	if tmpErr != nil {

+ 2 - 0
models/edb_data_calculate_hbz.go

@@ -42,6 +42,8 @@ func AddCalculateHbz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, ed
 		edbInfo.ModifyTime = time.Now()
 		edbInfo.UniqueCode = uniqueCode
 		edbInfo.CalculateFormula = req.Formula
+		edbInfo.EdbNameEn = req.EdbName
+		edbInfo.UnitEn = req.Unit
 		edbInfo.EdbType = 2
 		newEdbInfoId, tmpErr := to.Insert(edbInfo)
 		if tmpErr != nil {

+ 2 - 0
models/edb_data_calculate_hcz.go

@@ -42,6 +42,8 @@ func AddCalculateHcz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, ed
 		edbInfo.ModifyTime = time.Now()
 		edbInfo.UniqueCode = uniqueCode
 		edbInfo.CalculateFormula = req.Formula
+		edbInfo.EdbNameEn = req.EdbName
+		edbInfo.UnitEn = req.Unit
 		edbInfo.EdbType = 2
 		newEdbInfoId, tmpErr := to.Insert(edbInfo)
 		if tmpErr != nil {

+ 2 - 0
models/edb_data_calculate_jp.go

@@ -69,6 +69,8 @@ func AddCalculateJp(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edb
 		edbInfo.ModifyTime = time.Now()
 		edbInfo.UniqueCode = uniqueCode
 		edbInfo.CalculateFormula = req.Formula
+		edbInfo.EdbNameEn = req.EdbName
+		edbInfo.UnitEn = req.Unit
 		edbInfo.EdbType = 2
 		newEdbInfoId, tmpErr := to.Insert(edbInfo)
 		if tmpErr != nil {

+ 2 - 0
models/edb_data_calculate_kszs.go

@@ -47,6 +47,8 @@ func AddCalculateKszs(req *EdbInfoCalculateBatchSaveReq, edbCode, uniqueCode str
 	edbInfo.ModifyTime = time.Now()
 	edbInfo.UniqueCode = uniqueCode
 	edbInfo.CalculateFormula = req.Formula
+	edbInfo.EdbNameEn = req.EdbName
+	edbInfo.UnitEn = req.Unit
 	edbInfo.EdbType = 2
 	newEdbInfoId, tmpErr := to.Insert(edbInfo)
 	if tmpErr != nil {

+ 2 - 2
models/edb_data_calculate_ljz.go

@@ -75,8 +75,8 @@ func (obj Ljz) Add(params AddCalculateBatchParams) (edbInfo *EdbInfo, err error,
 		NoUpdate:         0,
 		ServerUrl:        "",
 		EdbInfoType:      0,
-		EdbNameEn:        "",
-		UnitEn:           "",
+		EdbNameEn:        req.EdbName,
+		UnitEn:           req.Unit,
 		LatestDate:       "",
 		LatestValue:      0,
 		ChartImage:       "",

+ 2 - 2
models/edb_data_calculate_ljznczj.go

@@ -74,8 +74,8 @@ func (obj LjzNczj) Add(params AddCalculateBatchParams) (edbInfo *EdbInfo, err er
 		NoUpdate:         0,
 		ServerUrl:        "",
 		EdbInfoType:      0,
-		EdbNameEn:        "",
-		UnitEn:           "",
+		EdbNameEn:        req.EdbName,
+		UnitEn:           req.Unit,
 		LatestDate:       "",
 		LatestValue:      0,
 		ChartImage:       "",

+ 2 - 0
models/edb_data_calculate_ljztbpj.go

@@ -99,6 +99,8 @@ func AddCalculateLjztbpj(req *EdbInfoCalculateBatchSaveReq, firstEdbInfo, second
 			CreateTime:       time.Now(),
 			ModifyTime:       time.Now(),
 			CalculateFormula: lastDateTime.Format(utils.FormatDate),
+			EdbNameEn:        req.EdbName,
+			UnitEn:           req.Unit,
 			EdbType:          2,
 		}
 		newEdbInfoId, tmpErr := to.Insert(edbInfo)

+ 2 - 0
models/edb_data_calculate_ljzzj.go

@@ -55,6 +55,8 @@ func (obj Ljzzj) Add(params AddCalculateBatchParams) (edbInfo *EdbInfo, err erro
 	edbInfo.ModifyTime = time.Now()
 	edbInfo.UniqueCode = params.UniqueCode
 	edbInfo.CalculateFormula = req.Formula
+	edbInfo.EdbNameEn = req.EdbName
+	edbInfo.UnitEn = req.Unit
 	edbInfo.EdbType = obj.GetEdbType()
 	newEdbInfoId, tmpErr := to.Insert(edbInfo)
 	if tmpErr != nil {

+ 2 - 0
models/edb_data_calculate_ljzzy.go

@@ -43,6 +43,8 @@ func AddCalculateLjzzy(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo,
 		edbInfo.ModifyTime = time.Now()
 		edbInfo.UniqueCode = uniqueCode
 		edbInfo.CalculateFormula = req.Formula
+		edbInfo.EdbNameEn = req.EdbName
+		edbInfo.UnitEn = req.Unit
 		edbInfo.EdbType = 2
 		newEdbInfoId, tmpErr := to.Insert(edbInfo)
 		if tmpErr != nil {

+ 2 - 0
models/edb_data_calculate_nh.go

@@ -42,6 +42,8 @@ func AddCalculateNh(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edb
 		edbInfo.ModifyTime = time.Now()
 		edbInfo.UniqueCode = uniqueCode
 		edbInfo.CalculateFormula = req.Formula
+		edbInfo.EdbNameEn = req.EdbName
+		edbInfo.UnitEn = req.Unit
 		edbInfo.EdbType = 2
 		newEdbInfoId, tmpErr := to.Insert(edbInfo)
 		if tmpErr != nil {

+ 2 - 0
models/edb_data_calculate_nhcc.go

@@ -63,6 +63,8 @@ func AddCalculateNhcc(req *EdbInfoCalculateBatchSaveReq, firstEdbInfo, secondEdb
 			CreateTime:       time.Now(),
 			ModifyTime:       time.Now(),
 			CalculateFormula: req.Formula,
+			EdbNameEn:        req.EdbName,
+			UnitEn:           req.Unit,
 			EdbType:          2,
 		}
 		newEdbInfoId, tmpErr := to.Insert(edbInfo)

+ 2 - 0
models/edb_data_calculate_nszydbpjjs.go

@@ -39,6 +39,8 @@ func AddCalculateNszydpjjs(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbIn
 		edbInfo.ModifyTime = time.Now()
 		edbInfo.UniqueCode = uniqueCode
 		edbInfo.CalculateFormula = req.Formula
+		edbInfo.EdbNameEn = req.EdbName
+		edbInfo.UnitEn = req.Unit
 		edbInfo.EdbType = 2
 		newEdbInfoId, tmpErr := to.Insert(edbInfo)
 		if tmpErr != nil {

+ 2 - 0
models/edb_data_calculate_percentile.go

@@ -51,6 +51,8 @@ func (obj Percentile) Add(params AddCalculateBatchParams) (edbInfo *EdbInfo, err
 	edbInfo.ModifyTime = time.Now()
 	edbInfo.UniqueCode = params.UniqueCode
 	edbInfo.CalculateFormula = req.Formula
+	edbInfo.EdbNameEn = req.EdbName
+	edbInfo.UnitEn = req.Unit
 	edbInfo.EdbType = obj.GetEdbType()
 	newEdbInfoId, tmpErr := to.Insert(edbInfo)
 	if tmpErr != nil {

+ 2 - 0
models/edb_data_calculate_rjz.go

@@ -42,6 +42,8 @@ func AddCalculateRjz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, ed
 		edbInfo.ModifyTime = time.Now()
 		edbInfo.UniqueCode = uniqueCode
 		edbInfo.CalculateFormula = req.Formula
+		edbInfo.EdbNameEn = req.EdbName
+		edbInfo.UnitEn = req.Unit
 		edbInfo.EdbType = 2
 		newEdbInfoId, tmpErr := to.Insert(edbInfo)
 		if tmpErr != nil {

+ 2 - 0
models/edb_data_calculate_standard_deviation.go

@@ -50,6 +50,8 @@ func (obj StandardDeviation) Add(params AddCalculateBatchParams) (edbInfo *EdbIn
 	edbInfo.ModifyTime = time.Now()
 	edbInfo.UniqueCode = params.UniqueCode
 	edbInfo.CalculateFormula = req.Formula
+	edbInfo.EdbNameEn = req.EdbName
+	edbInfo.UnitEn = req.Unit
 	edbInfo.EdbType = obj.GetEdbType()
 	newEdbInfoId, tmpErr := to.Insert(edbInfo)
 	if tmpErr != nil {

+ 2 - 0
models/edb_data_calculate_sum.go

@@ -57,6 +57,8 @@ func (obj CalculateSum) Add(params AddCalculateBatchParams) (edbInfo *EdbInfo, e
 	edbInfo.EmptyType = req.EmptyType
 	edbInfo.MaxEmptyType = req.MaxEmptyType
 	edbInfo.Extra = req.Extra
+	edbInfo.EdbNameEn = req.EdbName
+	edbInfo.UnitEn = req.Unit
 	newEdbInfoId, tmpErr := to.Insert(edbInfo)
 	if tmpErr != nil {
 		errMsg = "新增失败"

+ 2 - 0
models/edb_data_calculate_tbz.go

@@ -42,6 +42,8 @@ func AddCalculateTbz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, ed
 		edbInfo.ModifyTime = time.Now()
 		edbInfo.UniqueCode = uniqueCode
 		edbInfo.CalculateFormula = req.Formula
+		edbInfo.EdbNameEn = req.EdbName
+		edbInfo.UnitEn = req.Unit
 		edbInfo.EdbType = 2
 		newEdbInfoId, tmpErr := to.Insert(edbInfo)
 		if tmpErr != nil {

+ 2 - 0
models/edb_data_calculate_tcz.go

@@ -43,6 +43,8 @@ func AddCalculateTcz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, ed
 		edbInfo.ModifyTime = time.Now()
 		edbInfo.UniqueCode = uniqueCode
 		edbInfo.CalculateFormula = req.Formula
+		edbInfo.EdbNameEn = req.EdbName
+		edbInfo.UnitEn = req.Unit
 		edbInfo.EdbType = 2
 		newEdbInfoId, tmpErr := to.Insert(edbInfo)
 		if tmpErr != nil {

+ 2 - 0
models/edb_data_calculate_time_shift.go

@@ -43,6 +43,8 @@ func AddCalculateTimeShift(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbIn
 		edbInfo.ModifyTime = time.Now()
 		edbInfo.UniqueCode = uniqueCode
 		edbInfo.CalculateFormula = req.Formula
+		edbInfo.EdbNameEn = req.EdbName
+		edbInfo.UnitEn = req.Unit
 		edbInfo.EdbType = 2
 		edbInfo.MoveType = req.MoveType
 		edbInfo.MoveFrequency = req.MoveFrequency

+ 2 - 0
models/edb_data_calculate_zdyfx.go

@@ -69,6 +69,8 @@ func (obj CustomAnalysis) Add(params AddCalculateBatchParams) (edbInfo *EdbInfo,
 	edbInfo.ModifyTime = time.Now()
 	edbInfo.UniqueCode = params.UniqueCode
 	edbInfo.CalculateFormula = req.Formula
+	edbInfo.EdbNameEn = req.EdbName
+	edbInfo.UnitEn = req.Unit
 	edbInfo.EdbType = 2
 	newEdbInfoId, tmpErr := to.Insert(edbInfo)
 	if tmpErr != nil {

+ 2 - 0
models/edb_data_calculate_zjpj.go

@@ -54,6 +54,8 @@ func AddCalculateZjpj(req *EdbInfoCalculateBatchSaveReq, firstEdbInfo, secondEdb
 			CreateTime:       time.Now(),
 			ModifyTime:       time.Now(),
 			CalculateFormula: req.Formula,
+			EdbNameEn:        req.EdbName,
+			UnitEn:           req.Unit,
 			EdbType:          2,
 		}
 		newEdbInfoId, tmpErr := to.Insert(edbInfo)

+ 2 - 0
models/edb_data_calculate_zsxy.go

@@ -49,6 +49,8 @@ func (obj ExponentialSmoothing) Add(params AddCalculateBatchParams) (edbInfo *Ed
 	edbInfo.ModifyTime = time.Now()
 	edbInfo.UniqueCode = params.UniqueCode
 	edbInfo.CalculateFormula = req.Formula
+	edbInfo.EdbNameEn = req.EdbName
+	edbInfo.UnitEn = req.Unit
 	edbInfo.EdbType = obj.GetEdbType()
 	newEdbInfoId, tmpErr := to.Insert(edbInfo)
 	if tmpErr != nil {

+ 99 - 11
services/base_from_calculate.go

@@ -11,7 +11,7 @@ import (
 )
 
 // EdbCalculateBatchSave 批量指标运算
-func EdbCalculateBatchSave(req models.EdbInfoCalculateBatchSaveReq) (edbInfo *models.EdbInfo, uniqueCode string, err error, errMsg string) {
+func EdbCalculateBatchSave(req models.EdbInfoCalculateBatchSaveReq, lang string) (edbInfo *models.EdbInfo, uniqueCode string, err error, errMsg string) {
 	// 校验参数
 	req.EdbName = strings.Trim(req.EdbName, " ")
 	if req.EdbName == "" {
@@ -213,7 +213,7 @@ func EdbCalculateBatchSave(req models.EdbInfoCalculateBatchSaveReq) (edbInfo *mo
 			req2.EdbInfoIdArr = append(req2.EdbInfoIdArr, t)
 		}
 
-		edbInfo, _, err, errMsg = EdbCalculateAdd(req2)
+		edbInfo, _, err, errMsg = EdbCalculateAdd(req2, lang)
 	case utils.DATA_SOURCE_CALCULATE_LJZZY:
 		sourName = "累计值转月值"
 		if fromEdbInfo.Frequency != "月度" {
@@ -865,7 +865,7 @@ func EdbCalculateBatchEdit(req models.EdbInfoCalculateBatchEditReq) (edbInfo *mo
 }
 
 // EdbCalculateAdd 新增指标运算
-func EdbCalculateAdd(req models.EdbInfoCalculateSaveReq) (edbInfo *models.EdbInfo, uniqueCode string, err error, errMsg string) {
+func EdbCalculateAdd(req models.EdbInfoCalculateSaveReq, lang string) (edbInfo *models.EdbInfo, uniqueCode string, err error, errMsg string) {
 	calculateFormula := req.CalculateFormula
 	calculateFormula = strings.Replace(calculateFormula, "(", "(", -1)
 	calculateFormula = strings.Replace(calculateFormula, ")", ")", -1)
@@ -898,24 +898,21 @@ func EdbCalculateAdd(req models.EdbInfoCalculateSaveReq) (edbInfo *models.EdbInf
 		req.EdbInfoIdArr = newEdbInfoIdArr
 	}
 
-	var condition string
-	var pars []interface{}
-	condition += " AND edb_name=? "
-	pars = append(pars, req.EdbName)
-
-	count, err := models.GetEdbInfoCountByCondition(condition, pars)
+	// 校验指标名称是否存在
+	existEdbName, err := checkExistByEdbName(req.EdbName, lang)
 	if err != nil {
 		errMsg = "判断指标名称是否存在失败,Err:" + err.Error()
 		err = fmt.Errorf("判断指标名称是否存在失败")
 		return
 	}
 
-	if count > 0 {
-		err = fmt.Errorf("指标名称已存在,请重新填写")
+	if existEdbName {
 		errMsg = "指标名称已存在,请重新填写"
+		err = fmt.Errorf(errMsg)
 		//br.IsSendEmail = false
 		return
 	}
+
 	//检验公式
 	var formulaStr string
 	var edbInfoIdBytes []string
@@ -1013,3 +1010,94 @@ func EdbCalculateAdd(req models.EdbInfoCalculateSaveReq) (edbInfo *models.EdbInf
 
 	return
 }
+
+// checkExistByEdbName
+// @Description: 根据指标名称校验该指标是否存在库中
+// @author: Roc
+// @datetime 2024-04-18 14:58:52
+// @param edbName string
+// @param lang string
+// @return has bool
+// @return err error
+func checkExistByEdbName(edbName, lang string) (has bool, err error) {
+	var condition string
+	var pars []interface{}
+
+	switch lang {
+	case utils.EnLangVersion:
+		condition += " AND edb_name_en = ? "
+	default:
+		condition += " AND edb_name=? "
+	}
+
+	pars = append(pars, edbName)
+
+	count, err := models.GetEdbInfoCountByCondition(condition, pars)
+	if err != nil {
+		return
+	}
+
+	if count > 0 {
+		has = true
+		return
+	}
+
+	return
+}
+
+// checkExistByEdbNameAndEdbInfoId
+// @Description: 根据指标名称和指标ID校验库中是否还存在其他同名指标
+// @author: Roc
+// @datetime 2024-04-18 15:00:19
+// @param edbInfoId int
+// @param edbName string
+// @param lang string
+// @return has bool
+// @return err error
+func checkExistByEdbNameAndEdbInfoId(edbInfoId int, edbName, lang string) (has bool, err error) {
+	var condition string
+	var pars []interface{}
+
+	condition += " AND edb_info_id<>? "
+	pars = append(pars, edbInfoId)
+
+	switch lang {
+	case utils.EnLangVersion:
+		condition += " AND edb_name_en = ? "
+	default:
+		condition += " AND edb_name=? "
+	}
+
+	pars = append(pars, edbName)
+
+	count, err := models.GetEdbInfoCountByCondition(condition, pars)
+	if err != nil {
+		return
+	}
+
+	if count > 0 {
+		has = true
+		return
+	}
+
+	return
+}
+
+// CheckExistByEdbNameAndEdbInfoId
+// @Description: 根据指标名称和指标ID校验库中是否还存在其他同名指标
+// @author: Roc
+// @datetime 2024-04-18 15:01:44
+// @param edbInfoId int
+// @param edbName string
+// @param lang string
+// @return has bool
+// @return err error
+func CheckExistByEdbNameAndEdbInfoId(edbInfoId int, edbName, lang string) (has bool, err error) {
+	// 指标没有入库的情况
+	if edbInfoId == 0 {
+		return checkExistByEdbName(edbName, lang)
+	}
+
+	//指标已经入库的情况
+	return checkExistByEdbNameAndEdbInfoId(edbInfoId, edbName, lang)
+}

+ 6 - 0
utils/constants.go

@@ -278,3 +278,9 @@ const (
 	DATA_SUB_SOURCE_EDB  = iota //经济数据库
 	DATA_SUB_SOURCE_DATE        //日期序列
 )
+
+// 语言版本
+const (
+	ZhLangVersion = "zh" // 中文语言版本
+	EnLangVersion = "en" // 英文语言版本
+)