Browse Source

fix:权限调整

Roc 10 months ago
parent
commit
700f5f4493

+ 2 - 0
controllers/data_manage/excel/mixed_table.go

@@ -470,10 +470,12 @@ func (c *ExcelInfoController) GetBaseEdbInfo() {
 				tmp.EdbInfoType = v.EdbInfoType
 				tmp.EdbCode = v.EdbCode
 				tmp.EdbName = v.EdbName
+				tmp.EdbNameEn = v.EdbNameEn
 				tmp.Source = v.Source
 				tmp.SourceName = v.SourceName
 				tmp.Frequency = v.Frequency
 				tmp.Unit = v.Unit
+				tmp.UnitEn = v.UnitEn
 				list = append(list, tmp)
 			}
 		}

+ 211 - 124
controllers/data_manage/future_good/future_good_chart_info.go

@@ -3002,133 +3002,220 @@ func (this *FutureGoodChartInfoController) PreviewBarChartInfo() {
 	br.Data = resp
 }
 
-//
-//修复数据时间戳
+// BaseInfoEdit
+// @Title 编辑图表基础信息接口
+// @Description 编辑图表基础信息接口
+// @Param	request	body data_manage.EditChartInfoBaseReq true "type json string"
+// @Success Ret=200 编辑成功
+// @router /chart_info/base/edit [post]
+func (this *FutureGoodChartInfoController) BaseInfoEdit() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
 
-//func init() {
-//	fmt.Println("start")
-//	edbInfoList,err:=data_manage.GetEdbInfo()
-//	if err!=nil {
-//		fmt.Println("Err:",err.Error())
-//		return
-//	}
-//	startDate:=time.Now().AddDate(-40,0,0).Format(utils.FormatDate)
-//	endDate:=time.Now().Format(utils.FormatDate)
-//	for _,v:=range edbInfoList{
-//		dataList,err:=data_manage.GetEdbDataList(v.Source,v.EdbInfoId,startDate,endDate)
-//		if err!=nil {
-//			fmt.Println("GetEdbDataList Err:",err.Error())
-//			return
-//		}
-//		for _,dv:=range dataList{
-//			dataTime,err:=time.Parse(utils.FormatDate,dv.DataTime)
-//			if err!=nil {
-//				fmt.Println("time.Parse Err:"+err.Error())
-//				return
-//			}
-//			timestamp:=dataTime.UnixNano()/1e6
-//			err=data_manage.ModifyEdbDatadTimestamp(v.Source,dv.EdbDataId,timestamp)
-//			if err!=nil{
-//				fmt.Println("ModifyEdbDatadTimestamp Err:"+err.Error())
-//				return
-//			}
-//			fmt.Println(v.Source,dv.EdbDataId,timestamp)
-//		}
-//	}
-//	//time.Sleep(2*time.Minute)
-//
-//	//startDate:=time.Now().AddDate(-30,0,0).Format(utils.FormatDate)
-//	//endDate:=time.Now().Format(utils.FormatDate)
-//	//dataList,err:=data_manage.GetEdbDataList(1,100099,startDate,endDate)
-//	//if err!=nil {
-//	//	fmt.Println("GetEdbDataList Err:",err.Error())
-//	//	return
-//	//}
-//	//for _,dv:=range dataList{
-//	//	dataTime,err:=time.Parse(utils.FormatDate,dv.DataTime)
-//	//	if err!=nil {
-//	//		fmt.Println("time.Parse Err:"+err.Error())
-//	//		return
-//	//	}
-//	//	timestamp:=dataTime.UnixNano()/1e6
-//	//	err=data_manage.ModifyEdbDatadTimestamp(2,dv.EdbDataId,timestamp)
-//	//	if err!=nil{
-//	//		fmt.Println("ModifyEdbDatadTimestamp Err:"+err.Error())
-//	//		return
-//	//	}
-//	//	fmt.Println(2,dv.EdbDataId,timestamp)
-//	//}
-//
-//	fmt.Println("end")
-//}
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
 
-//修复指标配置数据
-//func init() {
-//	fmt.Println("start")
-//	edbInfo, err := data_manage.GetEdbInfoAll()
-//	fmt.Println(err)
-//	for k, v := range edbInfoAll {
-//		fmt.Println(k, v.EdbInfoId)
-//		item, err := data_manage.GetEdbInfoMaxAndMinInfo(v.Source, v.EdbCode)
-//		fmt.Println(item, err)
-//		err = data_manage.ModifyEdbInfoMaxAndMinInfo(v.EdbInfoId, item)
-//		if err != nil {
-//			fmt.Println("ModifyEdbInfoMaxAndMinInfo Err:" + err.Error())
-//		}
-//	}
-//	fmt.Println("end")
-//}
+	var req request.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, " ")
 
-//func init() {
-//	fmt.Println("start")
-//	var yearArr []int
-//	yearArr = append(yearArr, 2021)
-//	yearArr = append(yearArr, 2010)
-//	yearArr = append(yearArr, 2020)
-//	yearArr = append(yearArr, 2017)
-//	yearArr = append(yearArr, 2019)
-//	sort.Sort(sort.Reverse(sort.IntSlice(yearArr)))
-//	fmt.Println(yearArr)
-//	fmt.Println("end")
-//}
+	if req.ChartInfoId <= 0 {
+		br.Msg = "请选择图表"
+		return
+	}
 
-//季度指标数据计算(公历转农历)
-//func init() {
-//	fmt.Println("start AddCalculateQuarter")
-//	list:=make([]*data_manage.EdbDataList,0)
-//	data_manage.AddCalculateQuarterV4(list)
-//	fmt.Println("end AddCalculateQuarter")
-//	//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
+	}
 
-/*
-{
-  "ChartClassifyId": 58,
-  "ChartName": "公历转农历6",
-  "ChartType": 2,
-  "ChartEdbInfoList": [
-    {
-      "ChartColor": "#00f",
-      "ChartStyle": "spline",
-      "ChartWidth": 3,
-      "EdbInfoId": 100466,
-      "EdbInfoType": 1,
-      "IsAxis": 1,
-      "IsOrder": false,
-      "LeadUnit": "",
-      "LeadValue": 0,
-      "MaxData": 0.2943,
-      "MinData": -0.2448
-    }
-  ]
-}
-*/
-//func init() {
-//	fmt.Println("start")
-//	data_manage.AddCalculateQuarter(100466,6,"C2108252836")
-//	fmt.Println("end")
-//}
+	if !utils.InArrayByInt([]int{utils.CHART_SOURCE_FUTURE_GOOD, utils.CHART_SOURCE_FUTURE_GOOD_PROFIT}, chartItem.Source) {
+		br.Msg = "该图不是商品价格/利润曲线图!"
+		br.IsSendEmail = false
+		return
+	}
 
-//func init() {
-//	data.AddAllChartInfo()
-//}
+	//图表操作权限
+	//ok := data.CheckOpChartPermission(sysUser, chartItem.SysUserId)
+	//if !ok {
+	//	br.Msg = "没有该图表的操作权限"
+	//	br.ErrMsg = "没有该图表的操作权限"
+	//	return
+	//}
+
+	edbInfoMapping, err := data_manage.GetEtaEdbChartEdbMapping(chartItem.ChartInfoId)
+	if err != nil {
+		br.Msg = "修改失败"
+		br.ErrMsg = "获取图表现货价格指标信息失败,指标信息失败,Err:" + err.Error()
+		return
+	}
+
+	//校验指标信息是否存在
+	edbInfo, err := data_manage.GetEdbInfoById(edbInfoMapping.EdbInfoId)
+	if err != nil {
+		if err.Error() == utils.ErrNoRow() {
+			br.Msg = "图表不存在!"
+			br.ErrMsg = "图表指标不存在,ChartInfoId:" + strconv.Itoa(edbInfoMapping.EdbInfoId)
+			return
+		} else {
+			br.Msg = "获取图表信息失败!"
+			br.ErrMsg = "获取图表的指标信息失败,Err:" + err.Error()
+			return
+		}
+	}
+	if edbInfo == nil {
+		br.Msg = "指标不存在!"
+		br.ErrMsg = "指标不存在,ChartInfoId:" + strconv.Itoa(edbInfoMapping.EdbInfoId)
+		return
+	}
+
+	if req.ChartName != "" {
+		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
+		}
+	}
+
+	switch chartItem.Source {
+	case utils.CHART_SOURCE_FUTURE_GOOD:
+		err = data_manage.EditBaseFutureGoodChartInfoAndEdbEnInfo(chartItem, req.ChartName, edbInfo.EdbInfoId, req.EdbName, req.Unit, this.Lang)
+		if req.FutureGoodName != `` {
+			futureGoodEdbInfoMapping, err := data_manage.GetFutureGoodEdbChartEdbMapping(chartItem.ChartInfoId)
+			if err != nil {
+				br.Msg = "修改失败"
+				br.ErrMsg = "获取图表现货价格指标信息失败,指标信息失败,Err:" + err.Error()
+				return
+			}
+			futureGoodEdbInfo, err := future_good.GetFutureGoodEdbInfo(futureGoodEdbInfoMapping.EdbInfoId)
+			if err != nil {
+				if err.Error() == utils.ErrNoRow() {
+					br.Msg = "图表不存在!"
+					br.ErrMsg = "图表指标不存在,ChartInfoId:" + strconv.Itoa(edbInfoMapping.EdbInfoId)
+					return
+				} else {
+					br.Msg = "获取图表信息失败!"
+					br.ErrMsg = "获取图表的指标信息失败,Err:" + err.Error()
+					return
+				}
+			}
+			if futureGoodEdbInfo == nil {
+				br.Msg = "期货商品指标不存在!"
+				br.ErrMsg = "期货商品指标不存在,ChartInfoId:" + strconv.Itoa(edbInfoMapping.EdbInfoId)
+				return
+			}
+
+			list, _ := future_good.GetFutureGoodEdbInfoListByParentId(futureGoodEdbInfo.FutureGoodEdbInfoId)
+			for _, v := range list {
+				switch this.Lang {
+				case utils.EnLangVersion:
+					if v.FutureGoodEdbNameEn == `` {
+						v.FutureGoodEdbNameEn = strings.TrimPrefix(req.FutureGoodName, " ")
+						v.FutureGoodEdbNameEn = strings.TrimSuffix(req.FutureGoodName, " ")
+					} else {
+						v.FutureGoodEdbNameEn = strings.TrimPrefix(strings.Replace(v.FutureGoodEdbNameEn, v.FutureGoodEdbNameEn, req.FutureGoodName, -1), " ")
+						v.FutureGoodEdbNameEn = strings.TrimSuffix(req.FutureGoodName, " ")
+					}
+					v.Update([]string{"FutureGoodEdbNameEn"})
+				default:
+					if v.FutureGoodEdbName == `` {
+						v.FutureGoodEdbName = strings.TrimPrefix(req.FutureGoodName, " ")
+						v.FutureGoodEdbName = strings.TrimSuffix(req.FutureGoodName, " ")
+					} else {
+						v.FutureGoodEdbName = strings.TrimPrefix(strings.Replace(v.FutureGoodEdbName, v.FutureGoodEdbName, req.FutureGoodName, -1), " ")
+						v.FutureGoodEdbName = strings.TrimSuffix(req.FutureGoodName, " ")
+					}
+					v.Update([]string{"FutureGoodEdbName"})
+				}
+			}
+		}
+	case utils.CHART_SOURCE_FUTURE_GOOD_PROFIT:
+		err = data_manage.EditBaseFutureGoodProfitChartInfoAndEdbEnInfo(chartItem, req.ChartName, edbInfo.EdbInfoId, req.EdbName, req.Unit, req.ProfitName, this.Lang)
+	default:
+		br.Msg = "错误的图表类型"
+		br.ErrMsg = "错误的图表类型"
+		br.IsSendEmail = false
+		return
+	}
+
+	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)
+
+	//指标 修改es信息
+	go data.AddOrEditEdbInfoToEs(edbInfo.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
+}

+ 4 - 0
models/data_manage/edb_info.go

@@ -81,8 +81,10 @@ type BaseEdbNameItem struct {
 	Source        int    `description:"来源id"`
 	EdbCode       string `description:"指标编码"`
 	EdbName       string `description:"指标名称"`
+	EdbNameEn     string `description:"指标英文名称"`
 	Frequency     string `description:"频率"`
 	Unit          string `description:"单位"`
+	UnitEn        string `description:"英文单位"`
 	HaveOperaAuth bool   `description:"是否有数据权限,默认:false"`
 }
 
@@ -1736,8 +1738,10 @@ type TraceEdbInfoResp struct {
 	EdbInfoId     int                `description:"指标id"`
 	EdbInfoType   int                `description:"指标类型: 0-普通指标; 1-预测指标"`
 	EdbName       string             `description:"指标名称"`
+	EdbNameEn     string             `description:"指标英文名称"`
 	EdbType       int                `description:"指标类型: 1-基础指标; 2-计算指标"`
 	RuleTitle     string             `description:"指标规则"`
+	RuleTitleEn   string             `description:"指标规则(英文)"`
 	UniqueCode    string             `description:"唯一编码"`
 	ClassifyId    int                `description:"分类ID"`
 	Child         []TraceEdbInfoResp `description:"下级来源"`

+ 11 - 0
models/data_manage/future_good/request/future_good_chart.go

@@ -110,3 +110,14 @@ type SectionScatterEdbItemReq struct {
 	YDateValue int    `description:"Y轴的日期N天的值"`
 	IsShow     bool   `description:"是否展示"`
 }
+
+// EditChartInfoBaseReq
+// @Description: 修改商品图表的基础信息
+type EditChartInfoBaseReq struct {
+	ChartInfoId    int    `description:"图表ID"`
+	ChartName      string `description:"图表名称(根据当前语言版本不同而不同)"`
+	EdbName        string `description:"指标名称(根据当前语言版本不同而不同)"`
+	Unit           string `description:"指标单位(根据当前语言版本不同而不同)"`
+	ProfitName     string `description:"利润名称(根据当前语言版本不同而不同)"`
+	FutureGoodName string `description:"期货合约名称(根据当前语言版本不同而不同)"`
+}

+ 166 - 0
models/data_manage/future_good_chart_info.go

@@ -1,8 +1,10 @@
 package data_manage
 
 import (
+	"eta/eta_mobile/utils"
 	"fmt"
 	"github.com/beego/beego/v2/client/orm"
+	"time"
 )
 
 // EditFutureGoodChartEnInfoAndEdbEnInfo 更改商品价格曲线英文信息
@@ -54,6 +56,95 @@ func EditFutureGoodChartEnInfoAndEdbEnInfo(chartInfoId int, chartNameEn string,
 	return
 }
 
+// EditBaseFutureGoodChartInfoAndEdbEnInfo
+// @Description:  编辑期货商品基础的图表信息及指标信息
+// @author: Roc
+// @datetime 2024-04-23 13:58:23
+// @param chartInfo ChartInfo
+// @param chartName string
+// @param edbInfoId int
+// @param edbName string
+// @param edbUnit string
+// @param lang string
+// @return err error
+func EditBaseFutureGoodChartInfoAndEdbEnInfo(chartInfo *ChartInfo, chartName string, edbInfoId int, edbName, edbUnit, 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:
+		chartInfo.ChartNameEn = chartName
+		updateChartCols = append(updateChartCols, "ChartNameEn")
+	default:
+		chartInfo.ChartName = chartName
+		updateChartCols = append(updateChartCols, "ChartName")
+	}
+	chartInfo.ModifyTime = time.Now()
+	updateChartCols = append(updateChartCols, "ModifyTime")
+	_, err = to.Update(chartInfo, updateChartCols...)
+	if err != nil {
+		fmt.Println("UPDATE  chart_info Err:", err.Error())
+		return err
+	}
+
+	var count int
+	csql := `SELECT COUNT(1) AS count FROM chart_edb_mapping WHERE chart_info_id=? AND edb_info_id=? AND source = 1 `
+	err = to.Raw(csql, chartInfo.ChartInfoId, edbInfoId).QueryRow(&count)
+	if err != nil {
+		fmt.Println("QueryRow Err:", err.Error())
+		return err
+	}
+	if count > 0 {
+		msql := ` UPDATE edb_info SET modify_time = NOW()  `
+		pars := make([]interface{}, 0)
+		switch lang {
+		case utils.EnLangVersion:
+			if edbName != `` {
+				msql += ` ,edb_name_en = ? `
+				pars = append(pars, edbName)
+			}
+
+			if edbUnit != `` {
+				msql += ` ,unit_en = ? `
+				pars = append(pars, edbUnit)
+			}
+
+		default:
+
+			if edbName != `` {
+				msql += ` ,edb_name = ? `
+				pars = append(pars, edbName)
+			}
+
+			if edbUnit != `` {
+				msql += ` ,unit = ? `
+				pars = append(pars, edbUnit)
+			}
+		}
+		msql += ` WHERE edb_info_id = ? `
+		pars = append(pars, edbInfoId)
+		_, err = to.Raw(msql, pars...).Exec()
+		if err != nil {
+			fmt.Println("edb_info Err:" + err.Error())
+			return err
+		}
+	}
+
+	return
+}
+
 // EditFutureGoodProfitChartEnInfoAndEdbEnInfo 更改商品利润曲线英文信息
 func EditFutureGoodProfitChartEnInfoAndEdbEnInfo(chartInfoId int, chartNameEn string, edbInfoId int, edbNameEn, edbUnitEn, profitNameEn string) (err error) {
 	o := orm.NewOrmUsingDB("data")
@@ -101,3 +192,78 @@ func EditFutureGoodProfitChartEnInfoAndEdbEnInfo(chartInfoId int, chartNameEn st
 
 	return
 }
+
+// EditBaseFutureGoodProfitChartInfoAndEdbEnInfo
+// @Description: 更改商品利润曲线基础信息
+// @author: Roc
+// @datetime 2024-04-23 14:36:45
+// @param chartInfo *ChartInfo
+// @param chartName string
+// @param edbInfoId int
+// @param edbName string
+// @param edbUnit string
+// @param profitName string
+// @param lang string
+// @return err error
+func EditBaseFutureGoodProfitChartInfoAndEdbEnInfo(chartInfo *ChartInfo, chartName string, edbInfoId int, edbName, edbUnit, profitName, 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:
+		chartInfo.ChartNameEn = chartName
+		updateChartCols = append(updateChartCols, "ChartNameEn")
+	default:
+		chartInfo.ChartName = chartName
+		updateChartCols = append(updateChartCols, "ChartName")
+	}
+	chartInfo.ModifyTime = time.Now()
+	updateChartCols = append(updateChartCols, "ModifyTime")
+	_, err = to.Update(chartInfo, updateChartCols...)
+	if err != nil {
+		fmt.Println("UPDATE  chart_info Err:", err.Error())
+		return err
+	}
+
+	// 更改指标英文信息
+	var sql string
+	switch lang {
+	case utils.EnLangVersion:
+		sql = ` UPDATE  edb_info SET edb_name_en = ?,unit_en = ?,modify_time = NOW() WHERE edb_info_id = ? `
+	default:
+		sql = ` UPDATE  edb_info SET edb_name = ?,unit = ?,modify_time = NOW() WHERE edb_info_id = ? `
+	}
+	_, err = to.Raw(sql, edbName, edbUnit, edbInfoId).Exec()
+	if err != nil {
+		fmt.Println("edb_info Err:" + err.Error())
+		return
+	}
+
+	// 更改指标英文信息
+
+	switch lang {
+	case utils.EnLangVersion:
+		sql = ` UPDATE  chart_info_future_good_profit SET profit_name_en = ?,modify_time = NOW() WHERE chart_info_id = ? `
+	default:
+		sql = ` UPDATE  chart_info_future_good_profit SET profit_name = ?,modify_time = NOW() WHERE chart_info_id = ? `
+	}
+	_, err = to.Raw(sql, profitName, chartInfo.ChartInfoId).Exec()
+	if err != nil {
+		fmt.Println("chart_info_future_good_profit Err:" + err.Error())
+		return
+	}
+
+	return
+}

+ 8 - 2
services/data/edb_info.go

@@ -1880,6 +1880,7 @@ func TraceEdbInfoByEdbInfoId(edbInfoId, sysUserId int) (traceEdbInfo data_manage
 		EdbInfoId:   edbInfoId,
 		EdbInfoType: edbInfo.EdbInfoType,
 		EdbName:     edbInfo.EdbName,
+		EdbNameEn:   edbInfo.EdbNameEn,
 		EdbType:     edbInfo.EdbType,
 		//Source:      edbInfo.Source,
 		UniqueCode: edbInfo.UniqueCode,
@@ -1964,6 +1965,7 @@ func TraceEdbInfoByEdbInfoIdList(edbInfoIdList []int) (traceEdbInfoList []data_m
 			EdbInfoId:   edbInfo.EdbInfoId,
 			EdbInfoType: edbInfo.EdbInfoType,
 			EdbName:     edbInfo.EdbName,
+			EdbNameEn:   edbInfo.EdbNameEn,
 			EdbType:     edbInfo.EdbType,
 			//Source:      edbInfo.Source,
 			UniqueCode: edbInfo.UniqueCode,
@@ -2073,7 +2075,7 @@ func handleTraceEdbInfo(traceEdbInfoResp data_manage.TraceEdbInfoResp, parentEdb
 	}
 
 	//traceEdbInfoResp.EdbName = edbInfo.EdbName
-	traceEdbInfoResp.EdbName, traceEdbInfoResp.RuleTitle = getEdbRuleTitle(edbInfo, parentEdbInfo, traceEdbInfoResp.Child, edbInfoMap, edbMappingMap)
+	traceEdbInfoResp.EdbName, traceEdbInfoResp.EdbNameEn, traceEdbInfoResp.RuleTitle, traceEdbInfoResp.RuleTitleEn = getEdbRuleTitle(edbInfo, parentEdbInfo, traceEdbInfoResp.Child, edbInfoMap, edbMappingMap)
 
 	if traceEdbInfoResp.Child != nil && len(traceEdbInfoResp.Child) > 0 {
 		for k, v := range traceEdbInfoResp.Child {
@@ -2092,8 +2094,9 @@ func handleTraceEdbInfo(traceEdbInfoResp data_manage.TraceEdbInfoResp, parentEdb
 }
 
 // getEdbRule 获取规则名称
-func getEdbRuleTitle(edbInfo, parentEdbInfo *data_manage.EdbInfo, childList []data_manage.TraceEdbInfoResp, edbInfoMap map[int]*data_manage.EdbInfo, edbMappingMap map[int][]*data_manage.EdbInfoCalculateMappingInfo) (edbName, ruleTitle string) {
+func getEdbRuleTitle(edbInfo, parentEdbInfo *data_manage.EdbInfo, childList []data_manage.TraceEdbInfoResp, edbInfoMap map[int]*data_manage.EdbInfo, edbMappingMap map[int][]*data_manage.EdbInfoCalculateMappingInfo) (edbName, edbNameEn, ruleTitle, ruleTitleEn string) {
 	edbName = edbInfo.EdbName
+	edbNameEn = edbInfo.EdbNameEn
 	ruleTitle = `来源于` + edbInfo.SourceName
 
 	if parentEdbInfo != nil {
@@ -2107,6 +2110,7 @@ func getEdbRuleTitle(edbInfo, parentEdbInfo *data_manage.EdbInfo, childList []da
 			for _, v := range edbMappingList {
 				if v.FromEdbInfoId == edbInfo.EdbInfoId {
 					edbName = fmt.Sprintf("%s(%s)", edbInfo.EdbName, v.FromTag)
+					edbName = fmt.Sprintf("%s(%s)", edbInfo.EdbNameEn, v.FromTag)
 				}
 			}
 
@@ -2114,12 +2118,14 @@ func getEdbRuleTitle(edbInfo, parentEdbInfo *data_manage.EdbInfo, childList []da
 			for _, v := range edbMappingList {
 				if v.FromEdbInfoId == edbInfo.EdbInfoId {
 					tmpName := ``
+					tmpNameEn := ``
 					if v.FromTag == `A` {
 						tmpName = `拼接日期前`
 					} else if v.FromTag == `B` {
 						tmpName = `拼接日期后`
 					}
 					edbName = fmt.Sprintf("%s(%s)", edbInfo.EdbName, tmpName)
+					edbName = fmt.Sprintf("%s(%s)", edbInfo.EdbNameEn, tmpNameEn)
 				}
 			}
 		case utils.DATA_SOURCE_CALCULATE_NHCC, utils.DATA_SOURCE_PREDICT_CALCULATE_NHCC: //计算指标(拟合残差)