Ver Fonte

fix:新增接口:编辑指标基础信息接口(根据当前语言版本不同而不同)

Roc há 10 meses atrás
pai
commit
8cd115439f

+ 1 - 1
controllers/base_auth.go

@@ -54,7 +54,7 @@ func (this *BaseAuthController) Prepare() {
 			{
 				lang := this.Ctx.Input.Header("Lang")
 				if lang == "" {
-					lang = utils.LangZh
+					lang = utils.ZhLangVersion
 				}
 				this.Lang = lang
 			}

+ 1 - 1
controllers/base_common.go

@@ -27,7 +27,7 @@ func (c *BaseCommonController) Prepare() {
 	{
 		lang := c.Ctx.Input.Header("Lang")
 		if lang == "" {
-			lang = utils.LangZh
+			lang = utils.ZhLangVersion
 		}
 		c.Lang = lang
 	}

+ 11 - 79
controllers/data_manage/chart_classify.go

@@ -10,7 +10,6 @@ import (
 	"eta/eta_mobile/services/data/data_manage_permission"
 	"eta/eta_mobile/utils"
 	"fmt"
-	"strconv"
 	"time"
 )
 
@@ -350,52 +349,21 @@ func (this *ChartClassifyController) AddChartClassify() {
 		return
 	}
 
-	count, err := data_manage.GetChartClassifyCount(req.ChartClassifyName, req.ParentId, utils.CHART_SOURCE_DEFAULT)
+	// 新增图表分类
+	_, err, errMsg, isSendEmail := data.AddChartClassify(req.ChartClassifyName, req.ParentId, req.Level, utils.CHART_SOURCE_DEFAULT, this.Lang, this.SysUser)
 	if err != nil {
-		br.Msg = "判断名称是否已存在失败"
-		br.ErrMsg = "判断名称是否已存在失败,Err:" + err.Error()
+		br.Msg = errMsg
+		br.ErrMsg = "添加分类失败,Err:" + err.Error()
+		br.IsSendEmail = isSendEmail
 		return
 	}
-	if count > 0 {
-		br.Msg = "分类名称已存在,请重新输入"
-		br.IsSendEmail = false
-		return
-	}
-	//获取该层级下最大的排序数
-	maxSort, err := data_manage.GetChartClassifyMaxSort(req.ParentId, utils.CHART_SOURCE_DEFAULT)
-
-	classify := new(data_manage.ChartClassify)
-	classify.ParentId = req.ParentId
-	classify.ChartClassifyName = req.ChartClassifyName
-	classify.HasData = 0
-	classify.CreateTime = time.Now()
-	classify.ModifyTime = time.Now()
-	classify.SysUserId = this.SysUser.AdminId
-	classify.SysUserRealName = this.SysUser.RealName
-	classify.Level = req.Level + 1
-	timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
-	classify.UniqueCode = utils.MD5(utils.DATA_PREFIX + "_" + timestamp)
-	classify.Sort = maxSort + 1
-	classify.Source = utils.CHART_SOURCE_DEFAULT
-
-	classifyId, err := data_manage.AddChartClassify(classify)
-	if err != nil {
-		br.Msg = "保存分类失败"
-		br.ErrMsg = "保存分类失败,Err:" + err.Error()
-		return
-	}
-	classify.ChartClassifyId = int(classifyId)
-
-	// 继承分类权限
-	{
-		go data_manage_permission.InheritParentClassify(5, utils.CHART_SOURCE_DEFAULT, classify.ChartClassifyId, classify.ParentId, classify.ChartClassifyName)
-	}
 
 	br.Ret = 200
 	br.Msg = "保存成功"
 	br.Success = true
 }
 
+// EditChartClassify
 // @Title 修改图表分类
 // @Description 修改图表分类接口
 // @Param	request	body data_manage.EditChartClassifyReq true "type json string"
@@ -426,51 +394,15 @@ func (this *ChartClassifyController) EditChartClassify() {
 		return
 	}
 
-	item, err := data_manage.GetChartClassifyById(req.ChartClassifyId)
+	// 编辑图表分类
+	_, err, errMsg, isSendEmail := data.EditChartClassify(req.ChartClassifyId, utils.CHART_SOURCE_DEFAULT, req.ChartClassifyName, this.Lang, this.SysUser)
 	if err != nil {
-		br.Msg = "保存失败"
-		br.Msg = "获取分类信息失败,Err:" + err.Error()
-		return
-	}
-	// 已授权分类id
-	permissionClassifyIdList, err := data_manage_permission.GetUserChartClassifyPermissionList(this.SysUser.AdminId, item.ChartClassifyId)
-	if err != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取已授权分类id数据失败,Err:" + err.Error()
+		br.Msg = errMsg
+		br.ErrMsg = "保存分类失败,Err:" + err.Error()
+		br.IsSendEmail = isSendEmail
 		return
 	}
-	haveOperaAuth := data_manage_permission.CheckEdbClassifyPermissionByPermissionIdList(item.IsJoinPermission, item.ChartClassifyId, permissionClassifyIdList)
-
-	// 权限校验
-	{
-		button := data.GetChartClassifyOpButton(this.SysUser, item.SysUserId, haveOperaAuth)
-		if !button.OpButton {
-			br.Msg = "无操作权限"
-			br.IsSendEmail = false
-			return
-		}
-	}
-
-	if item.ChartClassifyName != req.ChartClassifyName {
-		count, err := data_manage.GetChartClassifyCount(req.ChartClassifyName, item.ParentId, utils.CHART_SOURCE_DEFAULT)
-		if err != nil {
-			br.Msg = "判断名称是否已存在失败"
-			br.ErrMsg = "判断名称是否已存在失败,Err:" + err.Error()
-			return
-		}
-		if count > 0 {
-			br.Msg = "分类名称已存在,请重新输入"
-			br.IsSendEmail = false
-			return
-		}
 
-		err = data_manage.EditChartClassify(req.ChartClassifyId, utils.CHART_SOURCE_DEFAULT, req.ChartClassifyName)
-		if err != nil {
-			br.Msg = "保存失败"
-			br.ErrMsg = "保存失败,Err:" + err.Error()
-			return
-		}
-	}
 	br.Ret = 200
 	br.Msg = "保存成功"
 	br.Success = true

+ 201 - 2
controllers/data_manage/chart_info.go

@@ -212,7 +212,7 @@ func (this *ChartInfoController) ChartInfoAdd() {
 		return
 	}
 
-	chartInfo, err, errMsg, isSendEmail := data.AddChartInfo(req, sysUser.AdminId, sysUser.RealName)
+	chartInfo, err, errMsg, isSendEmail := data.AddChartInfo(req, sysUser.AdminId, sysUser.RealName, this.Lang)
 	if err != nil {
 		br.Msg = "保存失败"
 		if errMsg != `` {
@@ -293,7 +293,7 @@ func (this *ChartInfoController) ChartInfoEdit() {
 		return
 	}
 
-	chartItem, err, errMsg, isSendEmail := data.EditChartInfo(req, sysUser)
+	chartItem, err, errMsg, isSendEmail := data.EditChartInfo(req, sysUser, this.Lang)
 	if err != nil {
 		br.Msg = "保存失败"
 		if errMsg != `` {
@@ -332,6 +332,7 @@ func (this *ChartInfoController) ChartInfoEdit() {
 	br.IsAddLog = true
 }
 
+// ChartEnInfoEdit
 // @Title 编辑图表英文信息接口
 // @Description 编辑图表英文信息接口
 // @Param	request	body data_manage.EditChartEnInfoReq true "type json string"
@@ -523,6 +524,204 @@ func (this *ChartInfoController) ChartEnInfoEdit() {
 	br.IsAddLog = true
 }
 
+// ChartInfoBaseEdit
+// @Title 编辑图表基础信息接口
+// @Description 编辑图表基础信息接口
+// @Param	request	body data_manage.EditChartEnInfoBaseReq true "type json string"
+// @Success Ret=200 编辑成功
+// @router /chart_info/base/edit [post]
+func (this *ChartInfoController) ChartInfoBaseEdit() {
+	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.EditChartInfoBaseReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	req.ChartName = strings.Trim(req.ChartName, " ")
+	if req.ChartInfoId <= 0 {
+		br.Msg = "请选择图表"
+		return
+	}
+
+	//判断指标名称是否存在
+	chartItem, err := data_manage.GetChartInfoById(req.ChartInfoId)
+	if err != nil {
+		if err.Error() == utils.ErrNoRow() {
+			br.Msg = "图表已被删除,请刷新页面"
+			br.ErrMsg = "图表已被删除,请刷新页面"
+			return
+		}
+		br.Msg = "获取图表信息失败"
+		br.ErrMsg = "获取图表信息失败,Err:" + err.Error()
+		return
+	}
+
+	// 判断是否有传入对应的指标配置
+	noEdbInfoType := []int{10}
+	if len(req.ChartEdbInfoList) <= 0 && !utils.InArrayByInt(noEdbInfoType, chartItem.ChartType) {
+		br.Msg = "请选择指标!"
+		return
+	}
+
+	var edbCondition string
+	var edbPars []interface{}
+	for _, v := range req.ChartEdbInfoList {
+		edbInfoId := v.EdbInfoId
+		edbInfo, err := data_manage.GetEdbInfoById(edbInfoId)
+		if err != nil {
+			if err.Error() == utils.ErrNoRow() {
+				br.Msg = "图表不存在!"
+				br.ErrMsg = "图表指标不存在,ChartInfoId:" + strconv.Itoa(edbInfoId)
+				return
+			} else {
+				br.Msg = "获取图表信息失败!"
+				br.ErrMsg = "获取图表的指标信息失败,Err:" + err.Error()
+				return
+			}
+		}
+		if edbInfo == nil {
+			br.Msg = "指标不存在!"
+			br.ErrMsg = "指标不存在,ChartInfoId:" + strconv.Itoa(edbInfoId)
+			return
+		}
+
+		//判断指标名称是否重复
+		if v.EdbName != "" {
+			edbCondition = ""
+			edbPars = make([]interface{}, 0)
+
+			edbCondition += " AND edb_info_id<>? "
+			edbPars = append(edbPars, edbInfo.EdbInfoId)
+
+			switch this.Lang {
+			case utils.EnLangVersion:
+				edbCondition += " AND edb_name_en =? "
+			default:
+				edbCondition += " AND edb_name =? "
+			}
+
+			edbPars = append(edbPars, v.EdbName)
+
+			edbExist, err := data_manage.GetEdbInfoByCondition(edbCondition, edbPars)
+			if err != nil {
+				if err.Error() != utils.ErrNoRow() {
+					br.Msg = "判断英文指标名称是否存在失败"
+					br.ErrMsg = "判断英文指标名称是否存在失败,Err:" + err.Error()
+					return
+				}
+			}
+
+			if err == nil && edbExist.EdbInfoId > 0 {
+				br.Msg = edbExist.EdbName + ":" + v.EdbName + "指标名称已存在"
+				br.ErrMsg = "指标名称已存在,请重新填写"
+				br.IsSendEmail = false
+				return
+			}
+		}
+	}
+	if req.ChartName != "" || req.ExtraConfig != `` {
+		var condition string
+		var pars []interface{}
+		condition += " AND chart_info_id<>? "
+		pars = append(pars, req.ChartInfoId)
+
+		switch this.Lang {
+		case utils.EnLangVersion:
+			condition += " AND chart_name_en = ? "
+		default:
+			condition += " AND chart_name = ? "
+		}
+
+		pars = append(pars, req.ChartName)
+
+		existItem, err := data_manage.GetChartInfoByCondition(condition, pars)
+		if err != nil {
+			if err.Error() != utils.ErrNoRow() {
+				br.Msg = "判断英文图表名称是否存在失败"
+				br.ErrMsg = "判断英文图表名称是否存在失败,Err:" + err.Error()
+				return
+			}
+		}
+
+		if err == nil && existItem.ChartInfoId > 0 {
+			br.Msg = existItem.ChartName + ":" + req.ChartName + "图表名称已存在"
+			return
+		}
+	}
+
+	err = data_manage.EditChartBaseInfoAndEdbEnInfo(&req, chartItem, this.Lang)
+	if err != nil {
+		br.Msg = "保存失败"
+		br.ErrMsg = "保存失败,Err:" + err.Error()
+		return
+	}
+	//添加es数据
+	go data.EsAddOrEditChartInfo(chartItem.ChartInfoId)
+	//修改my eta es数据
+	go data.EsAddOrEditMyChartInfoByChartInfoId(chartItem.ChartInfoId)
+
+	//edbinfo 修改es信息
+	for _, v := range req.ChartEdbInfoList {
+		edbInfoId := v.EdbInfoId
+		edbInfo, err := data_manage.GetEdbInfoById(edbInfoId)
+		if err != nil {
+			if err.Error() == utils.ErrNoRow() {
+				br.Msg = "图表不存在!"
+				br.ErrMsg = "图表指标不存在,ChartInfoId:" + strconv.Itoa(edbInfoId)
+				return
+			} else {
+				br.Msg = "获取图表信息失败!"
+				br.ErrMsg = "获取图表的指标信息失败,Err:" + err.Error()
+				return
+			}
+		}
+		if edbInfo != nil {
+			go data.AddOrEditEdbInfoToEs(edbInfoId)
+		}
+	}
+
+	//新增操作日志
+	{
+		chartLog := new(data_manage.ChartInfoLog)
+		chartLog.ChartName = chartItem.ChartName
+		chartLog.ChartInfoId = req.ChartInfoId
+		chartLog.ChartClassifyId = chartItem.ChartClassifyId
+		chartLog.SysUserId = sysUser.AdminId
+		chartLog.SysUserRealName = sysUser.RealName
+		chartLog.UniqueCode = chartItem.UniqueCode
+		chartLog.CreateTime = time.Now()
+		chartLog.Content = string(this.Ctx.Input.RequestBody)
+		chartLog.Status = "编辑图表英文信息"
+		chartLog.Method = this.Ctx.Input.URL()
+		go data_manage.AddChartInfoLog(chartLog)
+	}
+	//清除缓存
+	if utils.Re == nil && utils.Rc != nil {
+		utils.Rc.Delete(utils.HZ_CHART_LIB_DETAIL + chartItem.UniqueCode) //图表分享链接缓存
+		utils.Rc.Delete(data.GetChartInfoDataKey(req.ChartInfoId))
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "编辑成功"
+	br.IsAddLog = true
+}
+
 // @Title 获取最新图表接口
 // @Description 获取最新图表接口
 // @Success 200 {object} data_manage.ChartInfoList

+ 171 - 9
controllers/data_manage/edb_info.go

@@ -2278,7 +2278,7 @@ func (this *EdbInfoController) EdbInfoAdd() {
 	}
 
 	// 指标入库
-	edbInfo, err, errMsg, isSendEmail := data.EdbInfoAdd(source, utils.DATA_SUB_SOURCE_EDB, req.ClassifyId, req.EdbCode, req.EdbName, req.Frequency, req.Unit, req.StartDate, req.EndDate, sysUser.AdminId, sysUser.RealName)
+	edbInfo, err, errMsg, isSendEmail := data.EdbInfoAdd(source, utils.DATA_SUB_SOURCE_EDB, req.ClassifyId, req.EdbCode, req.EdbName, req.Frequency, req.Unit, req.StartDate, req.EndDate, sysUser.AdminId, sysUser.RealName, this.Lang)
 	if err != nil {
 		br.Msg = "保存失败"
 		if errMsg != `` {
@@ -2431,7 +2431,24 @@ func (this *EdbInfoController) EdbInfoEdit() {
 	//condition += " AND source=? "
 	//pars = append(pars, edbInfo.Source)
 
-	condition += " AND edb_name=? "
+	updateCols := make([]string, 0)
+	switch this.Lang {
+	case utils.EnLangVersion:
+		condition += " AND edb_name_en = ? "
+		edbInfo.EdbNameEn = req.EdbName
+		edbInfo.Frequency = req.Frequency
+		edbInfo.UnitEn = req.Unit
+		edbInfo.ClassifyId = req.ClassifyId
+		updateCols = append(updateCols, "EdbNameEn", "Frequency", "UnitEn", "ClassifyId")
+	default:
+		condition += " AND edb_name=? "
+		edbInfo.EdbName = req.EdbName
+		edbInfo.EdbNameSource = req.EdbName
+		edbInfo.Frequency = req.Frequency
+		edbInfo.Unit = req.Unit
+		edbInfo.ClassifyId = req.ClassifyId
+		updateCols = append(updateCols, "EdbNameEn", "EdbNameSource", "Frequency", "UnitEn", "ClassifyId")
+	}
 	pars = append(pars, req.EdbName)
 
 	count, err := data_manage.GetEdbInfoCountByCondition(condition, pars)
@@ -2447,11 +2464,14 @@ func (this *EdbInfoController) EdbInfoEdit() {
 		br.IsSendEmail = false
 		return
 	}
-	err = data_manage.ModifyEdbInfo(&req)
-	if err != nil {
-		br.Msg = "保存失败"
-		br.ErrMsg = "修改失败,Err:" + err.Error()
-		return
+
+	if len(updateCols) > 0 {
+		err = edbInfo.Update(updateCols)
+		if err != nil {
+			br.Msg = "保存失败"
+			br.ErrMsg = "修改失败,Err:" + err.Error()
+			return
+		}
 	}
 
 	//处理同名指标
@@ -2496,8 +2516,14 @@ func (this *EdbInfoController) EdbInfoEdit() {
 	//添加es
 	data.AddOrEditEdbInfoToEs(req.EdbInfoId)
 
-	// 修改关联的预测指标基础信息
-	go data.ModifyPredictEdbBaseInfoBySourceEdb(edbInfo, req.Frequency, req.Unit)
+	switch this.Lang {
+	case utils.EnLangVersion:
+		// 修改关联的预测指标基础信息
+		go data.ModifyPredictEdbEnBaseInfoBySourceEdb(edbInfo, req.Unit)
+	default:
+		// 修改关联的预测指标基础信息
+		go data.ModifyPredictEdbBaseInfoBySourceEdb(edbInfo, req.Frequency, req.Unit)
+	}
 
 	// 添加钢联指标更新日志
 	if edbInfo.Source == utils.DATA_SOURCE_MYSTEEL_CHEMICAL {
@@ -2623,6 +2649,142 @@ func (this *EdbInfoController) EdbEnInfoEdit() {
 	br.IsAddLog = true
 }
 
+// EdbInfoBaseEdit
+// @Title 编辑指标基础信息接口
+// @Description 编辑指标基础信息接口
+// @Success 200 {object} data_manage.EditEdbBaseInfoReq
+// @router /edb_info/base/edit [post]
+func (this *EdbInfoController) EdbInfoBaseEdit() {
+	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.EditEdbBaseInfoReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+
+	req.EdbName = strings.Trim(req.EdbName, " ")
+	req.Unit = strings.Trim(req.Unit, " ")
+	if req.EdbInfoId <= 0 {
+		br.Msg = "参数错误"
+		br.ErrMsg = "指标id小于等于0"
+		return
+	}
+
+	edbInfo, err := data_manage.GetEdbInfoById(req.EdbInfoId)
+	if err != nil {
+		br.Msg = "获取指标信息失败"
+		br.ErrMsg = "获取指标信息失败,Err:" + err.Error()
+		return
+	}
+
+	updateCols := make([]string, 0)
+
+	if req.EdbName != "" {
+		//判断指标名称是否存在
+		var condition string
+		var pars []interface{}
+
+		condition += " AND edb_info_id<>? "
+		pars = append(pars, req.EdbInfoId)
+
+		/*condition += " AND source=? "
+		pars = append(pars, edbInfo.Source)*/
+
+		switch this.Lang {
+		case utils.EnLangVersion:
+			condition += " AND edb_name_en = ? "
+			edbInfo.EdbNameEn = req.EdbName
+			edbInfo.UnitEn = req.Unit
+			edbInfo.ModifyTime = time.Now()
+			updateCols = append(updateCols, "EdbNameEn", "UnitEn", "ModifyTime")
+		default:
+			condition += " AND edb_name = ? "
+			edbInfo.EdbName = req.EdbName
+			edbInfo.EdbNameSource = req.EdbName
+			edbInfo.Unit = req.Unit
+			edbInfo.ModifyTime = time.Now()
+			updateCols = append(updateCols, "EdbName", "EdbNameSource", "Unit", "ModifyTime")
+		}
+		pars = append(pars, req.EdbName)
+
+		edbExist, err := data_manage.GetEdbInfoByCondition(condition, pars)
+		if err != nil {
+			if err.Error() != utils.ErrNoRow() {
+				br.Msg = "判断英文指标名称是否存在失败"
+				br.ErrMsg = "判断英文指标名称是否存在失败,Err:" + err.Error()
+				return
+			}
+		}
+
+		if err == nil && edbExist.EdbInfoId > 0 {
+			br.Msg = edbExist.EdbName + ":" + req.EdbName + "指标名称已存在"
+			br.ErrMsg = "英文指标名称已存在,请重新填写"
+			br.IsSendEmail = false
+			return
+		}
+	}
+
+	if len(updateCols) > 0 {
+		err = edbInfo.Update(updateCols)
+		if err != nil {
+			br.Msg = "保存失败"
+			br.ErrMsg = "修改失败,Err:" + err.Error()
+			return
+		}
+	}
+
+	//新增操作日志
+	{
+		edbLog := new(data_manage.EdbInfoLog)
+		edbLog.EdbInfoId = edbInfo.EdbInfoId
+		edbLog.SourceName = edbInfo.SourceName
+		edbLog.Source = edbInfo.Source
+		edbLog.EdbCode = edbInfo.EdbCode
+		edbLog.EdbName = edbInfo.EdbName
+		edbLog.ClassifyId = edbInfo.ClassifyId
+		edbLog.SysUserId = sysUser.AdminId
+		edbLog.SysUserRealName = sysUser.RealName
+		edbLog.CreateTime = time.Now()
+		edbLog.Content = string(this.Ctx.Input.RequestBody)
+		edbLog.Status = "编辑指标英文信息"
+		edbLog.Method = this.Ctx.Input.URI()
+		go data_manage.AddEdbInfoLog(edbLog)
+	}
+
+	//添加es
+	data.AddOrEditEdbInfoToEs(req.EdbInfoId)
+
+	// 修改关联的预测指标基础信息
+	if edbInfo.EdbInfoType == 0 {
+		switch this.Lang {
+		case utils.EnLangVersion:
+			go data.ModifyPredictEdbEnBaseInfoBySourceEdb(edbInfo, req.Unit)
+		default:
+			go data.ModifyPredictEdbBaseInfoBySourceEdb(edbInfo, edbInfo.Frequency, req.Unit)
+
+		}
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "保存成功"
+	br.IsAddLog = true
+}
+
 // EdbInfoNewest
 // @Title 获取最新指标接口
 // @Description 获取最新指标接口

+ 3 - 3
controllers/data_manage/line_feature/chart_info.go

@@ -623,7 +623,7 @@ func (this *LineFeaturesChartInfoController) MultipleGraphConfigSaveChart() {
 				LeftMin:          fmt.Sprint(curveConf.LeftMin),
 				LeftMax:          fmt.Sprint(curveConf.LeftMax),
 			}
-			chartInfo, err, errMsg, isSendEmail = data.AddChartInfo(addChartReq, sysUser.AdminId, sysUser.RealName)
+			chartInfo, err, errMsg, isSendEmail = data.AddChartInfo(addChartReq, sysUser.AdminId, sysUser.RealName, this.Lang)
 		} else {
 			editChartReq := data_manage.EditChartInfoReq{
 				ChartInfoId:      multipleGraphConfigChartMapping.ChartInfoId,
@@ -638,7 +638,7 @@ func (this *LineFeaturesChartInfoController) MultipleGraphConfigSaveChart() {
 				LeftMin:          fmt.Sprint(curveConf.LeftMin),
 				LeftMax:          fmt.Sprint(curveConf.LeftMax),
 			}
-			chartInfo, err, errMsg, isSendEmail = data.EditChartInfo(editChartReq, sysUser)
+			chartInfo, err, errMsg, isSendEmail = data.EditChartInfo(editChartReq, sysUser, this.Lang)
 			if err != nil {
 				br.Msg = "保存失败"
 				if errMsg != `` {
@@ -920,7 +920,7 @@ func CopyMultipleGraphConfigSaveChart(req request.SaveMultipleGraphChartReq, thi
 			LeftMin:          fmt.Sprint(curveConf.LeftMin),
 			LeftMax:          fmt.Sprint(curveConf.LeftMax),
 		}
-		chartInfo, err, errMsg, isSendEmail = data.AddChartInfo(addChartReq, sysUser.AdminId, sysUser.RealName)
+		chartInfo, err, errMsg, isSendEmail = data.AddChartInfo(addChartReq, sysUser.AdminId, sysUser.RealName, this.Lang)
 	default:
 		if !utils.InArrayByInt([]int{utils.CHART_MULTIPLE_GRAPH_LINE_FEATURE_STANDARD_DEVIATION, utils.CHART_MULTIPLE_GRAPH_LINE_FEATURE_PERCENTILE, utils.CHART_MULTIPLE_GRAPH_LINE_FEATURE_FREQUENCY}, req.Source) {
 			br.Msg = "错误的来源"

+ 1 - 1
controllers/data_manage/supply_analysis/variety_edb.go

@@ -232,7 +232,7 @@ func (this *VarietyController) AddToEdb() {
 	prefixCode := "HZ_V"
 	suffixCode := time.Now().Format("060102") + randStr
 	edbCode := fmt.Sprint(prefixCode, varietyEdbInfo.Source, suffixCode)
-	edbInfo, err, errMsg, isSendEmail := data.EdbInfoAdd(utils.DATA_SOURCE_STOCK_PLANT, utils.DATA_SUB_SOURCE_EDB, req.ClassifyId, edbCode, req.EdbName, req.Frequency, req.Unit, varietyEdbInfo.StartDate.Format(utils.FormatDate), varietyEdbInfo.EndDate.Format(utils.FormatDate), sysUser.AdminId, sysUser.RealName)
+	edbInfo, err, errMsg, isSendEmail := data.EdbInfoAdd(utils.DATA_SOURCE_STOCK_PLANT, utils.DATA_SUB_SOURCE_EDB, req.ClassifyId, edbCode, req.EdbName, req.Frequency, req.Unit, varietyEdbInfo.StartDate.Format(utils.FormatDate), varietyEdbInfo.EndDate.Format(utils.FormatDate), sysUser.AdminId, sysUser.RealName, this.Lang)
 	if err != nil {
 		br.Msg = "保存失败"
 		if errMsg != `` {

+ 95 - 0
models/data_manage/chart_info.go

@@ -231,6 +231,7 @@ func GetChartInfoCountByCondition(condition string, pars []interface{}) (count i
 type EditChartInfoReq struct {
 	ChartInfoId          int                     `description:"图表ID"`
 	ChartName            string                  `description:"图表名称"`
+	ChartNameEn          string                  `description:"英文图表名称"`
 	ChartClassifyId      int                     `description:"分类id"`
 	ChartEdbInfoList     []*ChartSaveItem        `description:"指标及配置信息"`
 	ChartType            int                     `description:"生成样式:1:曲线图,2:季节性图,3:面积图,4:柱状图,5:散点图,6:组合图,7:柱方图,8:商品价格曲线图,9:相关性图,10:截面散点图"`
@@ -271,6 +272,20 @@ type EditChartEnInfoEdbItem struct {
 	UnitEn    string `description:"英文单位"`
 }
 
+// EditChartInfoBaseReq
+// @Description: 图表基础信息修改
+type EditChartInfoBaseReq struct {
+	ChartInfoId      int                         `description:"图表ID"`
+	ChartName        string                      `description:"图表名称(根据语言版本区分)"`
+	ChartEdbInfoList []*EditChartInfoEdbBaseItem `description:"指标及配置信息"`
+	ExtraConfig      string                      `description:"图表额外配置信息,json字符串"`
+}
+type EditChartInfoEdbBaseItem struct {
+	EdbInfoId int    `description:"指标ID"`
+	EdbName   string `description:"指标名称(根据语言版本区分)"`
+	Unit      string `description:"单位(根据语言版本区分)"`
+}
+
 func ModifyChartInfo(item *EditChartInfoReq) (err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := ` UPDATE  chart_info
@@ -726,6 +741,7 @@ func EditChartInfoAndMapping(req *EditChartInfoReq, edbInfoIdStr string, calenda
 	}()
 	var pars []interface{}
 	pars = append(pars, req.ChartName)
+	pars = append(pars, req.ChartNameEn)
 	pars = append(pars, edbInfoIdStr)
 	pars = append(pars, req.ChartType)
 	pars = append(pars, req.ChartClassifyId)
@@ -745,6 +761,7 @@ func EditChartInfoAndMapping(req *EditChartInfoReq, edbInfoIdStr string, calenda
 	sql := ` UPDATE  chart_info
 			SET
 			  chart_name =?,
+			  chart_name_en =?,
               edb_info_ids=?,
 			  chart_type=?,
 			  chart_classify_id = ?,
@@ -1045,6 +1062,12 @@ func EditFutureGoodChartInfoAndMapping(req *EditChartInfoReq, edbInfoIdStr strin
 	return
 }
 
+// EditChartEnInfoAndEdbEnInfo
+// @Description: 修改图表和指标的英文信息
+// @author: Roc
+// @datetime 2024-04-18 13:58:13
+// @param req *EditChartEnInfoReq
+// @return err error
 func EditChartEnInfoAndEdbEnInfo(req *EditChartEnInfoReq) (err error) {
 	o := orm.NewOrmUsingDB("data")
 	to, err := o.Begin()
@@ -1104,6 +1127,78 @@ func EditChartEnInfoAndEdbEnInfo(req *EditChartEnInfoReq) (err error) {
 	return
 }
 
+// EditChartBaseInfoAndEdbEnInfo
+// @Description: 修改图表和指标的基础信息
+// @author: Roc
+// @datetime 2024-04-18 13:28:16
+// @param req *EditChartInfoBaseReq
+// @param chartItem *ChartInfo
+// @param lang string
+// @return err error
+func EditChartBaseInfoAndEdbEnInfo(req *EditChartInfoBaseReq, chartItem *ChartInfo, lang string) (err error) {
+	o := orm.NewOrmUsingDB("data")
+	to, err := o.Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err != nil {
+			_ = to.Rollback()
+		} else {
+			_ = to.Commit()
+		}
+	}()
+
+	updateChartCols := make([]string, 0)
+	switch lang {
+	case utils.EnLangVersion:
+		chartItem.ChartNameEn = req.ChartName
+		updateChartCols = append(updateChartCols, "ChartNameEn")
+	default:
+		chartItem.ChartName = req.ChartName
+		updateChartCols = append(updateChartCols, "ChartName")
+	}
+
+	if req.ExtraConfig != `` {
+		chartItem.ExtraConfig = req.ExtraConfig
+		updateChartCols = append(updateChartCols, "ExtraConfig")
+	}
+	chartItem.ModifyTime = time.Now()
+	updateChartCols = append(updateChartCols, "ModifyTime")
+	_, err = to.Update(chartItem, updateChartCols...)
+	if err != nil {
+		fmt.Println("UPDATE  chart_info Err:", err.Error())
+		return err
+	}
+
+	var edbInfoIdArr []string
+	for _, v := range req.ChartEdbInfoList {
+		edbInfoIdArr = append(edbInfoIdArr, strconv.Itoa(v.EdbInfoId))
+		var count int
+		csql := `SELECT COUNT(1) AS count FROM chart_edb_mapping WHERE chart_info_id=? AND edb_info_id=? `
+		err = to.Raw(csql, req.ChartInfoId, v.EdbInfoId).QueryRow(&count)
+		if err != nil {
+			fmt.Println("QueryRow Err:", err.Error())
+			return err
+		}
+		if count > 0 {
+			switch lang {
+			case utils.EnLangVersion:
+				msql := ` UPDATE edb_info SET edb_name_en =?,unit_en = ?,modify_time = NOW() WHERE edb_info_id = ? `
+				_, err = to.Raw(msql, v.EdbName, v.Unit, v.EdbInfoId).Exec()
+			default:
+				msql := ` UPDATE edb_info SET edb_name =?,unit = ?,modify_time = NOW() WHERE edb_info_id = ? `
+				_, err = to.Raw(msql, v.EdbName, v.Unit, v.EdbInfoId).Exec()
+			}
+			if err != nil {
+				fmt.Println("edb_info Err:" + err.Error())
+				return err
+			}
+		}
+	}
+	return
+}
+
 func ModifyEdbDatadTimestamp(source, subSource, edbDataId int, dataTimestamp int64) (err error) {
 	tableName := GetEdbDataTableName(source, subSource)
 	sql := `UPDATE %s SET data_timestamp=? WHERE edb_data_id=? `

+ 23 - 0
models/data_manage/edb_config.go

@@ -0,0 +1,23 @@
+package data_manage
+
+import "github.com/beego/beego/v2/client/orm"
+
+type EdbConfig struct {
+	ConfigValue string `description:"详情"`
+}
+
+// EdbConfigUpdate 修改配置
+func EdbConfigUpdate(newValue, configCode string) (err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `UPDATE edb_config SET  config_value=?   WHERE config_code=  ?`
+	_, err = o.Raw(sql, newValue, configCode).Exec()
+	return
+}
+
+// GetConfigDetailByCode 根据配置编码获取配置的值
+func GetConfigDetailByCode(configCode string) (item *EdbConfig, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT config_value FROM edb_config WHERE config_code=? `
+	err = o.Raw(sql, configCode).QueryRow(&item)
+	return
+}

+ 8 - 0
models/data_manage/edb_info.go

@@ -286,6 +286,14 @@ type EditEdbEnInfoReq struct {
 	UnitEn    string `description:"英文单位"`
 }
 
+// EditEdbBaseInfoReq
+// @Description: 修改指标基础信息请求参数
+type EditEdbBaseInfoReq struct {
+	EdbInfoId int    `description:"指标ID"`
+	EdbName   string `description:"指标名称"`
+	Unit      string `description:"指标单位"`
+}
+
 func ModifyEdbInfo(item *EditEdbInfoReq) (err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := ` UPDATE  edb_info

+ 21 - 0
models/data_manage/edb_terminal.go

@@ -127,3 +127,24 @@ func (item *EdbTerminal) Update(cols []string) (err error) {
 	_, err = o.Update(item, cols...)
 	return
 }
+
+// GetEdbTerminalByCode 根据终端编码获取终端信息
+func GetEdbTerminalByCode(terminalCode string) (item *EdbTerminal, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT *  FROM edb_terminal WHERE terminal_code = ? `
+	err = o.Raw(sql, terminalCode).QueryRow(&item)
+	return
+}
+
+type TerminalCodeCountGroup struct {
+	TerminalCode string
+	Total        int
+}
+
+// GetEdbCountGroupByTerminal 获取终端code分组总数
+func GetEdbCountGroupByTerminal(source int) (list []TerminalCodeCountGroup, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `select terminal_code,count(1) total from edb_info where source = ? AND no_update=0 AND terminal_code != "" group by terminal_code; `
+	_, err = o.Raw(sql, source).QueryRows(&list)
+	return
+}

+ 9 - 0
routers/commentsRouter.go

@@ -2419,6 +2419,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_mobile/controllers/data_manage:EdbInfoController"] = append(beego.GlobalControllerRouter["eta/eta_mobile/controllers/data_manage:EdbInfoController"],
+        beego.ControllerComments{
+            Method: "EdbInfoBaseEdit",
+            Router: `/edb_info/base/edit`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_mobile/controllers/data_manage:EdbInfoController"] = append(beego.GlobalControllerRouter["eta/eta_mobile/controllers/data_manage:EdbInfoController"],
         beego.ControllerComments{
             Method: "EdbInfoBatchAdd",

+ 32 - 2
services/data/chart_classify.go

@@ -244,7 +244,7 @@ func AddChartClassify(chartClassifyName string, parentId, level, source int, lan
 	{
 		var count int
 		switch lang {
-		case utils.LangEn:
+		case utils.EnLangVersion:
 			count, err = data_manage.GetChartClassifyEnCount(chartClassifyName, parentId, source)
 		default:
 			count, err = data_manage.GetChartClassifyCount(chartClassifyName, parentId, source)
@@ -280,6 +280,14 @@ func AddChartClassify(chartClassifyName string, parentId, level, source int, lan
 	classifyInfo.Source = source
 
 	_, err = data_manage.AddChartClassify(classifyInfo)
+	if err != nil {
+		return
+	}
+
+	// 目前只有ETA图库需要继承分类权限
+	if classifyInfo.Source == utils.CHART_SOURCE_DEFAULT {
+		go data_manage_permission.InheritParentClassify(5, classifyInfo.Source, classifyInfo.ChartClassifyId, classifyInfo.ParentId, classifyInfo.ChartClassifyName)
+	}
 
 	return
 }
@@ -315,12 +323,34 @@ func EditChartClassify(chartClassifyId, source int, chartClassifyName, lang stri
 		return
 	}
 
+	// 权限校验
+	if classifyInfo.Source == utils.CHART_SOURCE_DEFAULT {
+		// 已授权分类id
+		permissionClassifyIdList, tmpErr := data_manage_permission.GetUserChartClassifyPermissionList(sysUser.AdminId, classifyInfo.ChartClassifyId)
+		if tmpErr != nil {
+			err = errors.New("获取已授权分类id数据失败,Err:" + err.Error())
+			return
+		}
+		haveOperaAuth := data_manage_permission.CheckEdbClassifyPermissionByPermissionIdList(classifyInfo.IsJoinPermission, classifyInfo.ChartClassifyId, permissionClassifyIdList)
+
+		// 权限校验
+		{
+			button := GetChartClassifyOpButton(sysUser, classifyInfo.SysUserId, haveOperaAuth)
+			if !button.OpButton {
+				errMsg = "无操作权限"
+				err = errors.New(errMsg)
+				isSendEmail = false
+				return
+			}
+		}
+	}
+
 	// 需要变更的字段
 	updateCols := make([]string, 0)
 
 	// 语言版本校验
 	switch lang {
-	case utils.LangEn:
+	case utils.EnLangVersion:
 		if classifyInfo.ChartClassifyNameEn != chartClassifyName {
 			count, tmpErr := data_manage.GetChartClassifyEnCount(chartClassifyName, classifyInfo.ParentId, source)
 			if tmpErr != nil {

+ 78 - 46
services/data/chart_info.go

@@ -1874,7 +1874,7 @@ func GetSectionScatterChartData(chartInfoId int, mappingList []*data_manage.Char
 }
 
 // AddChartInfo 添加图表
-func AddChartInfo(req data_manage.AddChartInfoReq, sysUserId int, sysUserRealName string) (chartInfo *data_manage.ChartInfo, err error, errMsg string, isSendEmail bool) {
+func AddChartInfo(req data_manage.AddChartInfoReq, sysUserId int, sysUserRealName, lang string) (chartInfo *data_manage.ChartInfo, err error, errMsg string, isSendEmail bool) {
 	isSendEmail = true // 默认错误的时候要发送邮件
 
 	req.ChartName = strings.Trim(req.ChartName, " ")
@@ -2074,29 +2074,38 @@ func AddChartInfo(req data_manage.AddChartInfoReq, sysUserId int, sysUserRealNam
 	//	br.Msg = "所选指标已存在相同指标"
 	//	return
 	//}
-	//判断图表是否存在
-	var condition string
-	var pars []interface{}
 
-	// 图表名称在不同图分类下不允许重复 需求调整时间:2022年11月07日09:47:07
-	//condition += " AND chart_classify_id=? "
-	//pars = append(pars, req.ChartClassifyId)
-
-	condition += " AND chart_name=? AND source = ? "
-	pars = append(pars, req.ChartName, utils.CHART_SOURCE_DEFAULT)
+	{
+		var count int // 同名指标数量
+		//判断图表是否存在
+		var condition string
+		var pars []interface{}
+
+		// 图表名称在不同图分类下不允许重复 需求调整时间:2022年11月07日09:47:07
+		//condition += " AND chart_classify_id=? "
+		//pars = append(pars, req.ChartClassifyId)
+
+		switch lang {
+		case utils.EnLangVersion:
+			condition += " AND chart_name_en = ? AND source = ? "
+		default:
+			condition += " AND chart_name = ? AND source = ? "
+		}
+		pars = append(pars, req.ChartName, utils.CHART_SOURCE_DEFAULT)
 
-	count, err := data_manage.GetChartInfoCountByCondition(condition, pars)
-	if err != nil {
-		errMsg = "判断图表名称是否存在失败"
-		err = errors.New("判断图表名称是否存在失败,Err:" + err.Error())
-		return
-	}
+		count, err = data_manage.GetChartInfoCountByCondition(condition, pars)
+		if err != nil {
+			errMsg = "判断图表名称是否存在失败"
+			err = errors.New("判断图表名称是否存在失败,Err:" + err.Error())
+			return
+		}
 
-	if count > 0 {
-		errMsg = "图表已存在,请重新填写"
-		err = errors.New("判断图表名称是否存在失败")
-		isSendEmail = false
-		return
+		if count > 0 {
+			errMsg = "图表已存在,请重新填写"
+			err = errors.New(errMsg)
+			isSendEmail = false
+			return
+		}
 	}
 
 	barChartConf := `` //柱方图的配置信息
@@ -2127,6 +2136,7 @@ func AddChartInfo(req data_manage.AddChartInfoReq, sysUserId int, sysUserRealNam
 
 	chartInfo = new(data_manage.ChartInfo)
 	chartInfo.ChartName = req.ChartName
+	chartInfo.ChartNameEn = req.ChartName
 	chartInfo.EdbInfoIds = edbInfoIdStr
 	chartInfo.ChartClassifyId = req.ChartClassifyId
 	chartInfo.SysUserId = sysUserId
@@ -2193,8 +2203,8 @@ func AddChartInfo(req data_manage.AddChartInfoReq, sysUserId int, sysUserRealNam
 		mapItem.EdbInfoId = v.EdbInfoId
 		mapItem.CreateTime = time.Now()
 		mapItem.ModifyTime = time.Now()
-		timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
-		mapItem.UniqueCode = utils.MD5(fmt.Sprint(utils.CHART_PREFIX, "_", v.EdbInfoId, "_", timestamp))
+		edbTimestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
+		mapItem.UniqueCode = utils.MD5(fmt.Sprint(utils.CHART_PREFIX, "_", v.EdbInfoId, "_", edbTimestamp))
 		mapItem.MaxData = v.MaxData
 		mapItem.MinData = v.MinData
 		mapItem.IsOrder = v.IsOrder
@@ -2229,7 +2239,7 @@ func AddChartInfo(req data_manage.AddChartInfoReq, sysUserId int, sysUserRealNam
 }
 
 // EditChartInfo 编辑图表
-func EditChartInfo(req data_manage.EditChartInfoReq, sysUser *system.Admin) (chartItem *data_manage.ChartInfo, err error, errMsg string, isSendEmail bool) {
+func EditChartInfo(req data_manage.EditChartInfoReq, sysUser *system.Admin, lang string) (chartItem *data_manage.ChartInfo, err error, errMsg string, isSendEmail bool) {
 	isSendEmail = true // 默认错误的时候要发送邮件
 
 	req.ChartName = strings.Trim(req.ChartName, " ")
@@ -2486,31 +2496,40 @@ func EditChartInfo(req data_manage.EditChartInfoReq, sysUser *system.Admin) (cha
 	//	br.Msg = "所选指标已存在相同指标"
 	//	return
 	//}
-	//判断图表是否存在
-	var condition string
-	var pars []interface{}
-	condition += " AND chart_info_id<>? "
-	pars = append(pars, req.ChartInfoId)
-
-	// 图表名称在不同图分类下不允许重复 需求调整时间:2022年11月07日09:47:07
-	//condition += " AND chart_classify_id=? "
-	//pars = append(pars, req.ChartClassifyId)
 
-	condition += " AND chart_name=? AND source = ? "
-	pars = append(pars, req.ChartName, utils.CHART_SOURCE_DEFAULT)
+	// 判断图表是否存在
+	{
+		var count int
+		var condition string
+		var pars []interface{}
+		condition += " AND chart_info_id<>? "
+		pars = append(pars, req.ChartInfoId)
+
+		// 图表名称在不同图分类下不允许重复 需求调整时间:2022年11月07日09:47:07
+		//condition += " AND chart_classify_id=? "
+		//pars = append(pars, req.ChartClassifyId)
+
+		switch lang {
+		case utils.EnLangVersion:
+			condition += " AND chart_name_en = ? AND source = ? "
+		default:
+			condition += " AND chart_name = ? AND source = ? "
+		}
+		pars = append(pars, req.ChartName, utils.CHART_SOURCE_DEFAULT)
 
-	count, err := data_manage.GetChartInfoCountByCondition(condition, pars)
-	if err != nil {
-		errMsg = "判断图表名称是否存在失败"
-		err = errors.New("判断图表名称是否存在失败,Err:" + err.Error())
-		return
-	}
+		count, err = data_manage.GetChartInfoCountByCondition(condition, pars)
+		if err != nil {
+			errMsg = "判断图表名称是否存在失败"
+			err = errors.New("判断图表名称是否存在失败,Err:" + err.Error())
+			return
+		}
 
-	if count > 0 {
-		errMsg = "图表已存在,请重新填写"
-		err = errors.New(errMsg)
-		isSendEmail = false
-		return
+		if count > 0 {
+			errMsg = "图表已存在,请重新填写"
+			err = errors.New(errMsg)
+			isSendEmail = false
+			return
+		}
 	}
 
 	barChartConf := `` //柱方图的配置信息
@@ -2540,6 +2559,19 @@ func EditChartInfo(req data_manage.EditChartInfoReq, sysUser *system.Admin) (cha
 	// 图表启用与否
 	disableVal := CheckIsDisableChart(edbInfoIdArr)
 
+	switch lang {
+	case utils.EnLangVersion:
+		req.ChartNameEn = req.ChartName
+		req.ChartName = chartItem.ChartName
+
+		if req.UnitEn == `` {
+			req.UnitEn = req.Unit
+		}
+		req.Unit = chartItem.Unit
+	default:
+		req.ChartNameEn = chartItem.ChartNameEn
+		req.UnitEn = chartItem.UnitEn
+	}
 	err = data_manage.EditChartInfoAndMapping(&req, edbInfoIdStr, calendar, dateType, disableVal, barChartConf, chartEdbInfoList, seasonExtraConfig)
 	if err != nil {
 		errMsg = "保存失败"

+ 2 - 2
services/data/edb_classify.go

@@ -257,7 +257,7 @@ func AddEdbClassify(classifyName string, parentId, level int, classifyType uint8
 	{
 		var count int
 		switch lang {
-		case utils.LangEn:
+		case utils.EnLangVersion:
 			count, err = data_manage.GetEdbClassifyEnCount(classifyName, parentId, classifyType)
 		default:
 			count, err = data_manage.GetEdbClassifyCount(classifyName, parentId, classifyType)
@@ -389,7 +389,7 @@ func EditEdbClassify(classifyId int, classifyName, lang string, sysUser *system.
 	updateCols := make([]string, 0)
 
 	switch lang {
-	case utils.LangEn:
+	case utils.EnLangVersion:
 		// 名字相同,那么就直接返回
 		if item.ClassifyNameEn == classifyName {
 			return

+ 146 - 41
services/data/edb_info.go

@@ -1719,29 +1719,39 @@ func getRefreshEdbInfoListByIds(edbInfoIdList []int) (newBaseEdbInfoArr, newBase
 }
 
 // EdbInfoAdd 添加指标到指标库
-func EdbInfoAdd(source, subSource, classifyId int, edbCode, edbName, frequency, unit, startDate, endDate string, sysUserId int, sysUserRealName string) (edbInfo *data_manage.EdbInfo, err error, errMsg string, isSendEmail bool) {
+func EdbInfoAdd(source, subSource, classifyId int, edbCode, edbName, frequency, unit, startDate, endDate string, sysUserId int, sysUserRealName, lang string) (edbInfo *data_manage.EdbInfo, err error, errMsg string, isSendEmail bool) {
 	isSendEmail = true
+
 	//判断指标名称是否存在
-	var condition string
-	var pars []interface{}
-	//condition += " AND source=? "
-	//pars = append(pars, source)
+	{
+		var count int
+		var condition string
+		var pars []interface{}
 
-	condition += " AND edb_name=? "
-	pars = append(pars, edbName)
+		//condition += " AND source=? "
+		//pars = append(pars, source)
 
-	count, err := data_manage.GetEdbInfoCountByCondition(condition, pars)
-	if err != nil {
-		errMsg = "判断指标名称是否存在失败"
-		err = errors.New("判断指标名称是否存在失败,Err:" + err.Error())
-		return
-	}
+		switch lang {
+		case utils.EnLangVersion:
+			condition += " AND edb_name_en = ? "
+		default:
+			condition += " AND edb_name=? "
+		}
+		pars = append(pars, edbName)
 
-	if count > 0 {
-		errMsg = "指标名称已存在,请重新填写"
-		err = errors.New(errMsg)
-		isSendEmail = false
-		return
+		count, err = data_manage.GetEdbInfoCountByCondition(condition, pars)
+		if err != nil {
+			errMsg = "判断指标名称是否存在失败"
+			err = errors.New("判断指标名称是否存在失败,Err:" + err.Error())
+			return
+		}
+
+		if count > 0 {
+			errMsg = "指标名称已存在,请重新填写"
+			err = errors.New(errMsg)
+			isSendEmail = false
+			return
+		}
 	}
 
 	edbInfo = new(data_manage.EdbInfo)
@@ -1793,29 +1803,12 @@ func EdbInfoAdd(source, subSource, classifyId int, edbCode, edbName, frequency,
 	if source == utils.DATA_SOURCE_STOCK_PLANT {
 		edbType = 2 //计算指标
 	}
-	// todo 如果缓存中的终端信息丢了是否需要调整 从缓存中获取
-	serverUrl := ``
-	if edbInfo.Source == utils.DATA_SOURCE_WIND {
-		windCacheKey := utils.CACHE_WIND_URL + ":" + edbCode
-		serverUrl, _ = utils.Rc.RedisString(windCacheKey)
-		if serverUrl == `` {
-			if len(utils.Hz_Data_WIND_Url_List) >= 1 {
-				serverUrl = utils.Hz_Data_WIND_Url_List[len(utils.Hz_Data_WIND_Url_List)-1] //默认是最后一个服务器地址
-			}
-		}
-	}
-	// 获取终端信息
-	terminalCodeCacheKey := utils.CACHE_EDB_TERMINAL_CODE_URL + edbCode
-	terminalCode, tE := utils.Rc.RedisString(terminalCodeCacheKey)
-	if tE != nil {
-		utils.FileLog.Info(fmt.Sprintf("从缓存中获取数据源终端信息失败, Err: %s", tE))
-	}
-	var sourceIndexName string
-	if terminalCode == "" {
-		terminalCode, sourceIndexName, tE = GetTerminalFromBaseIndex(source, edbCode)
-		if tE != nil {
-			utils.FileLog.Info(fmt.Sprintf("获取数据源终端信息失败, Err: %s", tE))
-		}
+	// 从缓存中获取
+	terminalCode, serverUrl, sourceIndexName, e := GetEdbTerminalCodeBySource(edbInfo.Source, edbInfo.EdbCode, edbInfo.StockCode)
+	if e != nil {
+		errMsg = "获取可以使用的终端地址失败"
+		err = errors.New("获取可以使用的终端地址失败,Err:" + e.Error())
+		return
 	}
 	//获取该层级下最大的排序数
 	maxSort, err := GetEdbClassifyMaxSort(classifyId, 0)
@@ -1827,9 +1820,11 @@ func EdbInfoAdd(source, subSource, classifyId int, edbCode, edbName, frequency,
 
 	edbInfo.EdbCode = edbCode
 	edbInfo.EdbName = edbName
+	edbInfo.EdbNameEn = edbName
 	edbInfo.EdbNameSource = edbName
 	edbInfo.Frequency = frequency
 	edbInfo.Unit = unit
+	edbInfo.UnitEn = frequency
 	edbInfo.StartDate = startDate
 	edbInfo.EndDate = endDate
 	edbInfo.ClassifyId = classifyId
@@ -2725,3 +2720,113 @@ func EdbInfoSmmApiAdd(item *data_manage.EdbInfo) (edbInfo *data_manage.EdbInfo,
 	AddOrEditEdbInfoToEs(int(edbInfoId))
 	return
 }
+
+// GetEdbTerminal 获取终端信息
+func GetEdbTerminal(source int, oldTerminalCode string) (edbTerminal *data_manage.EdbTerminal, err error) {
+	if source == utils.DATA_SOURCE_WIND && oldTerminalCode == "" {
+		tmpConfig := new(data_manage.EdbConfig)
+		tmpConfig, err = data_manage.GetConfigDetailByCode("wind_terminal_code")
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			err = errors.New("获取配置的wind地址失败,err:" + err.Error())
+			return
+		}
+		err = nil
+		if tmpConfig != nil {
+			oldTerminalCode = tmpConfig.ConfigValue
+			//return
+		}
+	}
+	if oldTerminalCode != "" {
+		edbTerminal, err = data_manage.GetEdbTerminalByCode(oldTerminalCode)
+		if err != nil {
+			return
+		}
+		return
+	}
+
+	// 配置中没有的话,那么就从分组获取,
+	list, err := data_manage.GetEdbCountGroupByTerminal(source)
+	if err != nil {
+		return
+	}
+	//windUrlNum := 0
+
+	//获取对应的配置url
+	terminalNumMap := make(map[string]int)
+	for _, v := range list {
+		terminalNumMap[v.TerminalCode] = v.Total
+	}
+
+	terminalList, err := data_manage.GetEdbTerminalListBySource(source)
+	if err != nil {
+		return
+	}
+	if len(terminalList) == 0 {
+		err = errors.New("终端地址未配置")
+		return
+	}
+	num := 0
+	for _, v := range terminalList {
+		tmpNum := terminalNumMap[v.TerminalCode]
+		if edbTerminal == nil {
+			edbTerminal = v
+			num = tmpNum
+		} else if tmpNum < num {
+			edbTerminal = v
+			num = tmpNum
+		}
+	}
+	if edbTerminal == nil {
+		err = errors.New("获取配置的终端地址失败")
+		return
+	}
+	/*if edbTerminal != nil {
+		windUrl = edbTerminal.ServerUrl
+		terminalCode = edbTerminal.TerminalCode
+	}*/
+	return
+}
+
+func GetEdbTerminalCodeBySource(source int, edbCode, stockCode string) (terminalCode, serverUrl, sourceIndexName string, err error) {
+	var e error
+	if stockCode != "" {
+		terminalCodeCacheKey := utils.CACHE_EDB_TERMINAL_CODE_URL + stockCode
+		terminalCode, e = utils.Rc.RedisString(terminalCodeCacheKey)
+		if e != nil {
+			utils.FileLog.Info(fmt.Sprintf("从缓存中获取数据源终端信息失败, Err: %s", e))
+		}
+
+		terminalInfo, e := GetEdbTerminal(source, terminalCode)
+		if e != nil {
+			err = errors.New("获取可以使用的终端失败,Err:" + e.Error())
+			return
+		}
+		serverUrl = terminalInfo.ServerUrl
+		terminalCode = terminalInfo.TerminalCode
+		return
+	}
+	// 获取终端信息
+	terminalCodeCacheKey := utils.CACHE_EDB_TERMINAL_CODE_URL + edbCode
+	terminalCode, tE := utils.Rc.RedisString(terminalCodeCacheKey)
+	if tE != nil {
+		utils.FileLog.Info(fmt.Sprintf("从缓存中获取数据源终端信息失败, Err: %s", tE))
+	}
+	var terminalCodeOrigin string
+	terminalCodeOrigin, sourceIndexName, tE = GetTerminalFromBaseIndex(source, edbCode)
+	if tE != nil {
+		utils.FileLog.Info(fmt.Sprintf("获取数据源终端信息失败, Err: %s", tE))
+	}
+	if terminalCodeOrigin != "" {
+		terminalCode = terminalCodeOrigin
+	}
+	if source == utils.DATA_SOURCE_WIND || source == utils.DATA_SOURCE_THS {
+		terminalInfo, e := GetEdbTerminal(source, terminalCode)
+		if e != nil {
+			err = errors.New("获取可以使用的终端失败,Err:" + e.Error())
+			return
+		}
+		serverUrl = terminalInfo.ServerUrl
+		terminalCode = terminalInfo.TerminalCode
+	}
+	return
+}

+ 2 - 2
utils/constants.go

@@ -452,6 +452,6 @@ const (
 
 // 语言版本
 const (
-	LangZh = "zh" // 中文语言版本
-	LangEn = "en" // 英文语言版本
+	ZhLangVersion = "zh" // 中文语言版本
+	EnLangVersion = "en" // 英文语言版本
 )