Roc 4 ماه پیش
والد
کامیت
b94dfb1801

+ 56 - 15
controllers/data_manage/edb_info.go

@@ -1878,15 +1878,15 @@ func (this *EdbInfoController) EdbInfoFilterByEs() {
 	edbInfoListLen := len(edbInfoList)
 
 	classifyIdList := make([]int, 0)
-	for i := 0; i < edbInfoListLen; i++ {
-		edbInfoList[i].ConvertToResp()
-		edbInfoList[i].EdbNameAlias = edbInfoList[i].EdbName
-		classifyIdList = append(classifyIdList, edbInfoList[i].ClassifyId)
+	for _, v := range edbInfoList {
+		v.ConvertToResp()
+		v.EdbNameAlias = v.EdbName
+		classifyIdList = append(classifyIdList, v.ClassifyId)
 	}
 
 	// 当前列表中的分类map
 	classifyMap := make(map[int]*data_manage.EdbClassify)
-	if edbInfoListLen > 0 {
+	if len(classifyIdList) > 0 {
 		classifyList, err := data_manage.GetEdbClassifyByIdList(classifyIdList)
 		if err != nil {
 			br.Msg = "获取失败"
@@ -1909,11 +1909,10 @@ func (this *EdbInfoController) EdbInfoFilterByEs() {
 		// 因为是ES查找的,所以需要重新查一下指标的信息,主要是为了把是否授权字段找出来
 		{
 			edbInfoIdList := make([]int, 0)
-			for i := 0; i < edbInfoListLen; i++ {
-				edbInfoIdList = append(edbInfoIdList, edbInfoList[i].EdbInfoId)
-				tmpEdbInfo := edbInfoList[i]
+			for _, tmpEdbInfo := range edbInfoList {
+				edbInfoIdList = append(edbInfoIdList, tmpEdbInfo.EdbInfoId)
 				if currClassify, ok := classifyMap[tmpEdbInfo.ClassifyId]; ok {
-					edbInfoList[i].HaveOperaAuth = data_manage_permission.CheckEdbPermissionByPermissionIdList(tmpEdbInfo.IsJoinPermission, currClassify.IsJoinPermission, tmpEdbInfo.EdbInfoId, tmpEdbInfo.ClassifyId, permissionEdbIdList, permissionClassifyIdList)
+					tmpEdbInfo.HaveOperaAuth = data_manage_permission.CheckEdbPermissionByPermissionIdList(tmpEdbInfo.IsJoinPermission, currClassify.IsJoinPermission, tmpEdbInfo.EdbInfoId, tmpEdbInfo.ClassifyId, permissionEdbIdList, permissionClassifyIdList)
 				}
 			}
 
@@ -1928,20 +1927,57 @@ func (this *EdbInfoController) EdbInfoFilterByEs() {
 				edbInfoMap[v.EdbInfoId] = v
 			}
 
-			for i := 0; i < edbInfoListLen; i++ {
-				tmpEdbInfo, ok := edbInfoMap[edbInfoList[i].EdbInfoId]
+			// 查询收藏
+			collectEdbMap := make(map[int][]int)
+			collectNameEdbMap := make(map[int][]string)
+			{
+				obj := data_manage.EdbCollect{}
+				collectList, err := obj.GetItemsByUserIdAndEdbInfoIdList(this.SysUser.AdminId, edbInfoIdList)
+				if err != nil {
+					br.Msg = "获取指标信息失败"
+					br.ErrMsg = "获取指标数据失败,Err:" + err.Error()
+					return
+				}
+				for _, v := range collectList {
+					collectIdList, ok := collectEdbMap[v.EdbInfoId]
+					if !ok {
+						collectIdList = make([]int, 0)
+					}
+					collectEdbMap[v.EdbInfoId] = append(collectIdList, v.EdbCollectClassifyId)
+
+					collectNameList, ok := collectNameEdbMap[v.EdbInfoId]
+					if !ok {
+						collectNameList = make([]string, 0)
+					}
+					collectNameEdbMap[v.EdbInfoId] = append(collectNameList, v.ClassifyName)
+				}
+
+			}
+
+			for _, v := range edbInfoList {
+				if collectIdList, ok := collectEdbMap[v.EdbInfoId]; ok {
+					v.CollectClassifyIdList = collectIdList
+				} else {
+					v.CollectClassifyIdList = []int{}
+				}
+
+				if collectNameList, ok := collectNameEdbMap[v.EdbInfoId]; ok {
+					v.CollectClassifyNameList = collectNameList
+				} else {
+					v.CollectClassifyNameList = []string{}
+				}
+				tmpEdbInfo, ok := edbInfoMap[v.EdbInfoId]
 				if !ok {
 					continue
 				}
-				edbInfoList[i].IsJoinPermission = tmpEdbInfo.IsJoinPermission
+				v.IsJoinPermission = tmpEdbInfo.IsJoinPermission
 			}
 		}
 
 		// 权限校验
-		for i := 0; i < edbInfoListLen; i++ {
-			tmpEdbInfoItem := edbInfoList[i]
+		for _, tmpEdbInfoItem := range edbInfoList {
 			if currClassify, ok := classifyMap[tmpEdbInfoItem.ClassifyId]; ok {
-				edbInfoList[i].HaveOperaAuth = data_manage_permission.CheckEdbPermissionByPermissionIdList(tmpEdbInfoItem.IsJoinPermission, currClassify.IsJoinPermission, tmpEdbInfoItem.EdbInfoId, tmpEdbInfoItem.ClassifyId, permissionEdbIdList, permissionClassifyIdList)
+				tmpEdbInfoItem.HaveOperaAuth = data_manage_permission.CheckEdbPermissionByPermissionIdList(tmpEdbInfoItem.IsJoinPermission, currClassify.IsJoinPermission, tmpEdbInfoItem.EdbInfoId, tmpEdbInfoItem.ClassifyId, permissionEdbIdList, permissionClassifyIdList)
 			}
 		}
 	}
@@ -4719,6 +4755,11 @@ func (this *EdbInfoController) BatchMoveEdb() {
 			br.ErrMsg = `指标移动失败,ERR:` + err.Error()
 			return
 		}
+
+		// 还得修改ES呢
+		for _, v := range edbInfoIdList {
+			data.AddOrEditEdbInfoToEs(v)
+		}
 	}
 
 	br.Ret = 200

+ 4 - 0
controllers/data_manage/edb_public.go

@@ -725,6 +725,10 @@ func (c *EdbPublicController) BatchMoveEdb() {
 			br.ErrMsg = `指标移动失败,ERR:` + err.Error()
 			return
 		}
+		// 还得修改ES呢
+		for _, v := range edbInfoIdList {
+			data.AddOrEditEdbInfoToEs(v)
+		}
 	}
 
 	br.Ret = 200

+ 6 - 4
models/data_manage/data_approve/response/approve.go

@@ -9,10 +9,11 @@ type DataApproveDetail struct {
 
 // DataApproveDetailData 审批详情-报告信息
 type DataApproveDetailData struct {
-	DataId       int    `description:"数据ID"`
-	DataName     string `description:"数据名称"`
-	DataCode     string `description:"数据code"`
-	DataClassify int    `description:"数据所属分类"`
+	DataId           int    `description:"数据ID"`
+	DataName         string `description:"数据名称"`
+	DataCode         string `description:"数据code"`
+	DataClassifyId   int    `description:"数据所属分类id"`
+	DataClassifyName string `description:"数据所属分类名称"`
 }
 
 // DataApproveDetailItem 审批详情-审批信息
@@ -25,6 +26,7 @@ type DataApproveDetailItem struct {
 	CurrNodeId    int    `description:"当前节点ID"`
 	ApplyUserId   int    `description:"申请人ID"`
 	ApplyUserName string `description:"申请人姓名"`
+	ApproveRemark string `description:"申请理由"`
 	ApproveTime   string `description:"审批时间"`
 	CreateTime    string `description:"创建时间"`
 	ModifyTime    string `description:"修改时间"`

+ 26 - 0
models/data_manage/edb_collect.go

@@ -351,3 +351,29 @@ func UpdateEdbCollectMove(sort, adminId, edbInfoId, myChartClassifyId int) (err
 	err = global.DmSQL["data"].Exec(sql, sort, adminId, edbInfoId, myChartClassifyId).Error
 	return
 }
+
+// EdbCollectItem 指标收藏信息
+type EdbCollectItem struct {
+	EdbCollectId         int       `gorm:"primaryKey;autoIncrement;column:edb_collect_id;type:int(10) unsigned;not null"`
+	EdbCollectClassifyId int       `gorm:"index:idx_classify_id;column:edb_collect_classify_id;type:int(10) unsigned;not null;default:0"` // 指标收藏分类ID
+	EdbInfoId            int       `gorm:"column:edb_info_id;type:int(10) unsigned;not null;default:0"`                                   // 指标ID
+	EdbCode              string    `gorm:"column:edb_code;type:varchar(255);not null;default:''"`                                         // 指标编码
+	SysUserId            int       `gorm:"column:sys_user_id;type:int(10) unsigned;not null;default:0"`                                   // 创建人ID
+	SysRealName          string    `gorm:"column:sys_real_name;type:int(10) unsigned;not null;default:0"`                                 // 创建人姓名
+	ClassifyName         string    `gorm:"column:classify_name;type:varchar(255);not null;default:''"`                                    // 分类名称
+	Sort                 int       `gorm:"column:sort;type:int(10);default:0"`                                                            // 排序
+	CreateTime           time.Time `gorm:"column:create_time;type:datetime"`                                                              // 创建时间
+	ModifyTime           time.Time `gorm:"column:modify_time;type:datetime"`                                                              // 更新时间
+}
+
+func (m *EdbCollect) GetItemsByUserIdAndEdbInfoIdList(userId int, edbInfoIdList []int) (items []*EdbCollectItem, err error) {
+	if len(edbInfoIdList) <= 0 {
+		return
+	}
+	sql := `SELECT a.*,b.classify_name FROM edb_collect  AS a
+    JOIN edb_collect_classify b on a.edb_collect_classify_id = b.edb_collect_classify_id
+    WHERE a.sys_user_id = ? AND a.edb_info_id in (?)  ORDER BY a.edb_collect_id DESC `
+	err = global.DmSQL["data"].Raw(sql, userId, edbInfoIdList).Find(&items).Error
+
+	return
+}

+ 50 - 49
models/data_manage/edb_info.go

@@ -367,55 +367,56 @@ func ModifyEdbEnInfo(item *EditEdbEnInfoReq) (err error) {
 }
 
 type EdbInfoList struct {
-	EdbInfoId             int                     `orm:"column(edb_info_id);pk" gorm:"primaryKey" `
-	EdbInfoType           int                     `description:"指标类型,0:普通指标,1:预测指标"`
-	SourceName            string                  `description:"来源名称"`
-	Source                int                     `description:"来源id"`
-	EdbCode               string                  `description:"指标编码"`
-	EdbNameEn             string                  `description:"英文指标名称"`
-	EdbName               string                  `description:"指标名称"`
-	Frequency             string                  `description:"频率"`
-	FrequencyEn           string                  `description:"英文频率"`
-	Unit                  string                  `description:"单位"`
-	UnitEn                string                  `description:"英文单位"`
-	StartDate             string                  `description:"起始日期"`
-	EndDate               string                  `description:"终止日期"`
-	LatestDate            string                  `description:"数据最新日期(实际日期)"`
-	LatestValue           float64                 `description:"数据最新值(实际值)"`
-	EndValue              float64                 `description:"数据的最新值(预测日期的最新值)"`
-	ClassifyId            int                     `description:"分类id"`
-	UniqueCode            string                  `description:"指标唯一编码"`
-	SysUserId             int                     `description:"创建人id"`
-	SysUserRealName       string                  `description:"创建人姓名"`
-	ModifyTime            string                  `description:"最新修改时间"`
-	CreateTime            string                  `description:"创建时间"`
-	EdbNameAlias          string                  `json:"-" description:"指标名称,别名"`
-	EdbType               int                     `description:"指标类型:1:基础指标,2:计算指标"`
-	ChartImage            string                  `description:"图表图片"`
-	RuleType              int                     `description:"预测规则,1:最新,2:固定值"`
-	FixedValue            float64                 `description:"固定值"`
-	DataList              []*EdbData              `gorm:"-" description:"实际指标数据"`
-	PredictDataList       []*EdbData              `gorm:"-" description:"预测指标数据"`
-	Button                EdbClassifyItemsButton  `gorm:"-" description:"操作权限"`
-	IsEnEdb               bool                    `description:"是否展示英文标识"`
-	DataInsertConfig      EdbDataInsertConfigItem `gorm:"-" description:"指标数据插入配置"`
-	DataDateType          string                  `description:"数据日期类型,枚举值:交易日、自然日"`
-	EmptyType             int                     `description:"空值处理类型(0查找前后35天,1不计算,2前值填充,3后值填充,4等于0)"`
-	MaxEmptyType          int                     `description:"MAX、MIN公式空值处理类型(1、等于0;2、跳过空值)"`
-	SubSource             int                     `description:"子数据来源:0:经济数据库,1:日期序列"`
-	SubSourceName         string                  `description:"子数据来源名称"`
-	IndicatorCode         string                  `description:"指标代码"`
-	StockCode             string                  `description:"证券代码"`
-	NoUpdate              int8                    `description:"是否停止更新,0:继续更新;1:停止更新"`
-	IsJoinPermission      int                     `description:"是否加入权限管控,0:不加入;1:加入;默认:0"`
-	HaveOperaAuth         bool                    `description:"是否有数据权限,默认:false"`
-	IsSupplierStop        int                     `description:"是否供应商停更:1:停更,0:未停更"`
-	CollectClassifyIdList []int                   `description:"所属收藏分类id列表" gorm:"-"`
-	SharedUserIdList      []int                   `description:"共享用户id列表" gorm:"-"`
-	SharedUserName        string                  `description:"共享用户姓名,多个用英文,隔开" gorm:"-"`
-	PublicStatus          int                     `description:"公开状态;0:未公开;1:审批中;2:已驳回;3:已公开"`
-	EdbPublicClassifyId   int                     `description:"指标公开分类id"`
-	PublicTime            time.Time               `description:"设置公开的时间"`
+	EdbInfoId               int                     `orm:"column(edb_info_id);pk" gorm:"primaryKey" `
+	EdbInfoType             int                     `description:"指标类型,0:普通指标,1:预测指标"`
+	SourceName              string                  `description:"来源名称"`
+	Source                  int                     `description:"来源id"`
+	EdbCode                 string                  `description:"指标编码"`
+	EdbNameEn               string                  `description:"英文指标名称"`
+	EdbName                 string                  `description:"指标名称"`
+	Frequency               string                  `description:"频率"`
+	FrequencyEn             string                  `description:"英文频率"`
+	Unit                    string                  `description:"单位"`
+	UnitEn                  string                  `description:"英文单位"`
+	StartDate               string                  `description:"起始日期"`
+	EndDate                 string                  `description:"终止日期"`
+	LatestDate              string                  `description:"数据最新日期(实际日期)"`
+	LatestValue             float64                 `description:"数据最新值(实际值)"`
+	EndValue                float64                 `description:"数据的最新值(预测日期的最新值)"`
+	ClassifyId              int                     `description:"分类id"`
+	UniqueCode              string                  `description:"指标唯一编码"`
+	SysUserId               int                     `description:"创建人id"`
+	SysUserRealName         string                  `description:"创建人姓名"`
+	ModifyTime              string                  `description:"最新修改时间"`
+	CreateTime              string                  `description:"创建时间"`
+	EdbNameAlias            string                  `json:"-" description:"指标名称,别名"`
+	EdbType                 int                     `description:"指标类型:1:基础指标,2:计算指标"`
+	ChartImage              string                  `description:"图表图片"`
+	RuleType                int                     `description:"预测规则,1:最新,2:固定值"`
+	FixedValue              float64                 `description:"固定值"`
+	DataList                []*EdbData              `gorm:"-" description:"实际指标数据"`
+	PredictDataList         []*EdbData              `gorm:"-" description:"预测指标数据"`
+	Button                  EdbClassifyItemsButton  `gorm:"-" description:"操作权限"`
+	IsEnEdb                 bool                    `description:"是否展示英文标识"`
+	DataInsertConfig        EdbDataInsertConfigItem `gorm:"-" description:"指标数据插入配置"`
+	DataDateType            string                  `description:"数据日期类型,枚举值:交易日、自然日"`
+	EmptyType               int                     `description:"空值处理类型(0查找前后35天,1不计算,2前值填充,3后值填充,4等于0)"`
+	MaxEmptyType            int                     `description:"MAX、MIN公式空值处理类型(1、等于0;2、跳过空值)"`
+	SubSource               int                     `description:"子数据来源:0:经济数据库,1:日期序列"`
+	SubSourceName           string                  `description:"子数据来源名称"`
+	IndicatorCode           string                  `description:"指标代码"`
+	StockCode               string                  `description:"证券代码"`
+	NoUpdate                int8                    `description:"是否停止更新,0:继续更新;1:停止更新"`
+	IsJoinPermission        int                     `description:"是否加入权限管控,0:不加入;1:加入;默认:0"`
+	HaveOperaAuth           bool                    `description:"是否有数据权限,默认:false"`
+	IsSupplierStop          int                     `description:"是否供应商停更:1:停更,0:未停更"`
+	CollectClassifyIdList   []int                   `description:"所属收藏分类id列表" gorm:"-"`
+	CollectClassifyNameList []string                `description:"所属收藏分类名称列表" gorm:"-"`
+	SharedUserIdList        []int                   `description:"共享用户id列表" gorm:"-"`
+	SharedUserName          string                  `description:"共享用户姓名,多个用英文,隔开" gorm:"-"`
+	PublicStatus            int                     `description:"公开状态;0:未公开;1:审批中;2:已驳回;3:已公开"`
+	EdbPublicClassifyId     int                     `description:"指标公开分类id"`
+	PublicTime              time.Time               `description:"设置公开的时间"`
 }
 
 type EdbDataInsertConfigItem struct {

+ 18 - 0
models/data_manage/public_chart_classify.go

@@ -97,6 +97,24 @@ func (m ChartPublicClassify) GetChartClassifyById(classifyId int) (item *ChartPu
 	return
 }
 
+// GetEdbClassifyByIdList
+// @Description: 根据id列表获取分类列表
+// @author: Roc
+// @receiver m
+// @datetime 2024-12-04 16:56:15
+// @param classifyIdList []int
+// @return items []*ChartPublicClassify
+// @return err error
+func (m ChartPublicClassify) GetEdbClassifyByIdList(classifyIdList []int) (items []*ChartPublicClassify, err error) {
+	if len(classifyIdList) <= 0 {
+		return
+	}
+	sql := `SELECT * FROM chart_public_classify WHERE chart_public_classify_id in (?) `
+	err = global.DmSQL["data"].Raw(sql, classifyIdList).Find(&items).Error
+
+	return
+}
+
 // GetChartClassifyListByParentId
 // @Description: 根据父级id获取下级分类列表
 // @author: Roc

+ 18 - 0
models/data_manage/public_edb_classify.go

@@ -95,6 +95,24 @@ func (m EdbPublicClassify) GetEdbClassifyById(classifyId int) (item *EdbPublicCl
 	return
 }
 
+// GetEdbClassifyByIdList
+// @Description: 根据id列表获取分类列表
+// @author: Roc
+// @receiver m
+// @datetime 2024-12-04 16:56:15
+// @param classifyIdList []int
+// @return items []*EdbPublicClassify
+// @return err error
+func (m EdbPublicClassify) GetEdbClassifyByIdList(classifyIdList []int) (items []*EdbPublicClassify, err error) {
+	if len(classifyIdList) <= 0 {
+		return
+	}
+	sql := `SELECT * FROM edb_public_classify WHERE edb_public_classify_id in (?) `
+	err = global.DmSQL["data"].Raw(sql, classifyIdList).Find(&items).Error
+
+	return
+}
+
 // GetEdbClassifyListByParentId
 // @Description: 根据父级id获取下级分类列表
 // @author: Roc

+ 45 - 8
services/data/data_approve/approve.go

@@ -680,6 +680,7 @@ func GetApproveDetail(approveId int) (resp *response.DataApproveDetail, msg stri
 	detail.Approve.CurrNodeId = approveItem.CurrNodeId
 	detail.Approve.ApplyUserId = approveItem.ApplyUserId
 	detail.Approve.ApplyUserName = approveItem.ApplyUserName
+	detail.Approve.ApproveRemark = approveItem.ApproveRemark
 	detail.Approve.ApproveTime = utils.TimeTransferString(utils.FormatDateTime, approveItem.ApproveTime)
 	detail.Approve.CreateTime = utils.TimeTransferString(utils.FormatDateTime, approveItem.CreateTime)
 	detail.Approve.ModifyTime = utils.TimeTransferString(utils.FormatDateTime, approveItem.ModifyTime)
@@ -770,9 +771,11 @@ func GetApproveDetail(approveId int) (resp *response.DataApproveDetail, msg stri
 		}
 
 		dataIdList := make([]int, 0)
+		dataClassifyIdList := make([]int, 0)
 		dataIdClassifyIdMap := make(map[int]int)
 		for _, v := range dataItemList {
 			dataIdList = append(dataIdList, v.DataId)
+			dataClassifyIdList = append(dataClassifyIdList, v.ClassifyId)
 			dataIdClassifyIdMap[v.DataId] = v.ClassifyId
 		}
 
@@ -783,12 +786,29 @@ func GetApproveDetail(approveId int) (resp *response.DataApproveDetail, msg stri
 				err = tmpErr
 				return
 			}
+
+			publicClassifyMap := make(map[int]string)
+			// 获取分类信息
+			{
+				publicClassifyObj := data_manage.EdbPublicClassify{}
+				publicClassifyList, tmpErr := publicClassifyObj.GetEdbClassifyByIdList(dataClassifyIdList)
+				if tmpErr != nil {
+					err = tmpErr
+					return
+				}
+				for _, v := range publicClassifyList {
+					publicClassifyMap[v.EdbPublicClassifyId] = v.EdbPublicClassifyNamePath
+				}
+			}
+
 			for _, v := range tmpList {
+				classifyId := dataIdClassifyIdMap[v.EdbInfoId]
 				item := response.DataApproveDetailData{
-					DataId:       v.EdbInfoId,
-					DataName:     v.EdbName,
-					DataCode:     v.UniqueCode,
-					DataClassify: dataIdClassifyIdMap[v.EdbInfoId],
+					DataId:           v.EdbInfoId,
+					DataName:         v.EdbName,
+					DataCode:         v.UniqueCode,
+					DataClassifyId:   classifyId,
+					DataClassifyName: publicClassifyMap[classifyId],
 				}
 				dataList = append(dataList, item)
 			}
@@ -798,12 +818,29 @@ func GetApproveDetail(approveId int) (resp *response.DataApproveDetail, msg stri
 				err = tmpErr
 				return
 			}
+
+			publicClassifyMap := make(map[int]string)
+			// 获取分类信息
+			{
+				publicClassifyObj := data_manage.ChartPublicClassify{}
+				publicClassifyList, tmpErr := publicClassifyObj.GetEdbClassifyByIdList(dataClassifyIdList)
+				if tmpErr != nil {
+					err = tmpErr
+					return
+				}
+				for _, v := range publicClassifyList {
+					publicClassifyMap[v.ChartPublicClassifyId] = v.ChartPublicClassifyNamePath
+				}
+			}
+
 			for _, v := range tmpList {
+				classifyId := dataIdClassifyIdMap[v.ChartInfoId]
 				item := response.DataApproveDetailData{
-					DataId:       v.ChartInfoId,
-					DataName:     v.ChartName,
-					DataCode:     v.UniqueCode,
-					DataClassify: dataIdClassifyIdMap[v.ChartInfoId],
+					DataId:           v.ChartInfoId,
+					DataName:         v.ChartName,
+					DataCode:         v.UniqueCode,
+					DataClassifyId:   classifyId,
+					DataClassifyName: publicClassifyMap[classifyId],
 				}
 				dataList = append(dataList, item)
 			}

+ 11 - 0
services/elastic/edb_info.go

@@ -341,6 +341,17 @@ func SearchEdbInfoData(keywordStr string, from, size, filterSource, source int,
 
 		}
 
+		// 基础指标(数据加工)
+		shouldTermList = append(shouldTermList, map[string]interface{}{
+			"term": map[string]interface{}{
+				"EdbType": 1,
+			},
+		}, map[string]interface{}{
+			"term": map[string]interface{}{
+				"EdbInfoType": 0,
+			},
+		})
+
 		shouldMap := map[string]interface{}{
 			"should": shouldTermList,
 		}