Browse Source

Merge branch 'out_report_2.1'

xiziwen 3 months ago
parent
commit
6047959820

+ 10 - 0
models/classify.go

@@ -617,3 +617,13 @@ func GetClassifyListByIdStrList(classifyIdStrList []string) (items []*Classify,
 	_, err = o.Raw(sql, classifyIdStrList).QueryRows(&items)
 	return
 }
+
+// GetClassifyListByParentId 查询父分类下所有的子分类
+func GetClassifyListByParentId(parentId int) (items []*Classify, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := `SELECT * FROM classify WHERE parent_id = ? and enabled = 1`
+
+	_, err = o.Raw(sql, parentId).QueryRows(&items)
+
+	return items, err
+}

+ 1 - 1
models/document_manage_model/outside_report.go

@@ -70,7 +70,7 @@ func GetOutsideReportListByConditionCount(condition string, pars []interface{})
 // GetOutsideReportListByCondition 根据条件查询列表
 func GetOutsideReportListByCondition(condition string, pars []interface{}, currentIndex int, pageSize int) (list []OutsideReportResp, err error) {
 	o := orm.NewOrmUsingDB("rddp")
-	sql := `select distinct t1.outside_report_id, t1.source, t1.title, t1.abstract, t1.classify_id, t1.classify_name, t1.sys_user_id, t1.sys_user_name, t1.email_message_uid, t1.report_update_time, t1.modify_time, t1.create_time, t1.report_code  from outside_report t1 left join chart_permission_search_key_word_mapping t2 on t1.classify_id = t2.classify_id  where 1 = 1 `
+	sql := `select t1.outside_report_id, t1.source, t1.title, t1.abstract, t1.classify_id, t1.classify_name, t1.sys_user_id, t1.sys_user_name, t1.email_message_uid, t1.report_update_time, t1.modify_time, t1.create_time, t1.report_code  from outside_report t1 left join chart_permission_search_key_word_mapping t2 on t1.classify_id = t2.classify_id  where 1 = 1 `
 	sql += condition
 	sql += ` limit ?, ?`
 	_, err = o.Raw(sql, pars, (currentIndex-1)*pageSize, pageSize).QueryRows(&list)

+ 11 - 1
models/permission.go

@@ -1,6 +1,9 @@
 package models
 
-import "github.com/beego/beego/v2/client/orm"
+import (
+	"eta/eta_mobile/utils"
+	"github.com/beego/beego/v2/client/orm"
+)
 
 // ChartPermissionSearchKeyWordMapping 权限相关
 type ChartPermissionSearchKeyWordMapping struct {
@@ -124,3 +127,10 @@ func GetPermissionByClassifyId(classifyId int) (items []*ChartPermissionSearchKe
 	_, err = o.Raw(sql, classifyId).QueryRows(&items)
 	return
 }
+
+func GetClassifyIdsByPermissionId(chartPermissionIdList []string) (classifyIds []string, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := "SELECT classify_id FROM chart_permission_search_key_word_mapping WHERE `from` =  'rddp' and chart_permission_id IN (" + utils.GetOrmInReplace(len(chartPermissionIdList)) + ") and classify_id <> 0; "
+	_, err = o.Raw(sql, chartPermissionIdList).QueryRows(&classifyIds)
+	return
+}

+ 46 - 14
models/report.go

@@ -1695,14 +1695,28 @@ func GetReportListByCollectCountV2(classifyIdFirst, classifyIdSecond, classifyId
 		SELECT COUNT(DISTINCT t.id) AS totalCount
 		FROM (
 			SELECT b.id
-			FROM report AS b left join chart_permission_search_key_word_mapping c on
-b.classify_id_first = c.classify_id
-			WHERE 1 = 1
+			FROM report AS b WHERE 1 = 1
 	`
 	if len(chartPermissionIdList) > 0 {
-		sql += ` and c.chart_permission_id in (` + utils.GetOrmInReplace(len(chartPermissionIdList)) + `)`
-		for _, chartPermissionId := range chartPermissionIdList {
-			params = append(params, chartPermissionId)
+		classifyIds, e := GetClassifyIdsByPermissionId(chartPermissionIdList)
+		if e != nil {
+			err = e
+			return
+		}
+
+		if len(classifyIds) > 0 {
+			sql += ` AND ( (b.classify_id_first IN (` + utils.GetOrmInReplace(len(classifyIds)) + `) AND b.classify_id_second = 0) 
+			OR (b.classify_id_second IN (` + utils.GetOrmInReplace(len(classifyIds)) + `) AND b.classify_id_third = 0) 
+			OR b.classify_id_third IN (` + utils.GetOrmInReplace(len(classifyIds)) + `) )`
+			for _, classifyId := range classifyIds {
+				params = append(params, classifyId)
+			}
+			for _, classifyId := range classifyIds {
+				params = append(params, classifyId)
+			}
+			for _, classifyId := range classifyIds {
+				params = append(params, classifyId)
+			}
 		}
 	}
 
@@ -1764,12 +1778,14 @@ func GetReportListByCollectListV2(classifyIdFirst, classifyIdSecond, classifyIdT
 
 	// SQL 主体
 	sql := `
-		SELECT DISTINCT t.id, t.title, t.author, t.modify_time, t.publish_time,t.classify_id_first,t.classify_name_first,t.classify_id_second,t.classify_name_second,t.classify_id_third,t.classify_name_third
+		SELECT DISTINCT t.id, t.title, t.author, t.modify_time, t.publish_time,t.classify_id_first,t.classify_name_first,
+t.classify_id_second,t.classify_name_second,t.classify_id_third,t.classify_name_third,
+t.abstract,t.admin_id,t.admin_real_name,t.last_modify_admin_id,t.last_modify_admin_name 
 		FROM (
-			SELECT b.id, b.title, b.author, b.modify_time, b.publish_time,b.classify_id_first,b.classify_name_first,b.classify_id_second,b.classify_name_second,b.classify_id_third,b.classify_name_third
-			FROM report AS b  left join chart_permission_search_key_word_mapping c on
-b.classify_id_first = c.classify_id 
-			WHERE 1 = 1
+			SELECT b.id, b.title, b.author, b.modify_time, b.publish_time,b.classify_id_first,b.classify_name_first,
+b.classify_id_second,b.classify_name_second,b.classify_id_third,b.classify_name_third,
+b.abstract,b.admin_id,b.admin_real_name,b.last_modify_admin_id,b.last_modify_admin_name 
+			FROM report AS b WHERE 1 = 1
 	`
 
 	// 处理关键词
@@ -1818,9 +1834,25 @@ b.classify_id_first = c.classify_id
 	}
 
 	if len(chartPermissionIdList) > 0 {
-		sql += ` and c.chart_permission_id in (` + utils.GetOrmInReplace(len(chartPermissionIdList)) + `)`
-		for _, chartPermissionId := range chartPermissionIdList {
-			params = append(params, chartPermissionId)
+		classifyIds, e := GetClassifyIdsByPermissionId(chartPermissionIdList)
+		if e != nil {
+			err = e
+			return nil, err
+		}
+
+		if len(classifyIds) > 0 {
+			sql += ` AND ( (b.classify_id_first IN (` + utils.GetOrmInReplace(len(classifyIds)) + `) AND b.classify_id_second = 0) 
+			OR (b.classify_id_second IN (` + utils.GetOrmInReplace(len(classifyIds)) + `) AND b.classify_id_third = 0) 
+			OR b.classify_id_third IN (` + utils.GetOrmInReplace(len(classifyIds)) + `) )`
+			for _, classifyId := range classifyIds {
+				params = append(params, classifyId)
+			}
+			for _, classifyId := range classifyIds {
+				params = append(params, classifyId)
+			}
+			for _, classifyId := range classifyIds {
+				params = append(params, classifyId)
+			}
 		}
 	}
 

+ 43 - 2
services/document_manage_service/document_manage_service.go

@@ -178,6 +178,23 @@ func DocumentReportList(userId, documentType int, chartPermissionIdList []string
 		condition = ` and t1.source!=3`
 	}
 	if len(classifyIdList) > 0 {
+		// 递归查询子分类
+		for _, classifyId := range classifyIdList {
+			id, err := strconv.Atoi(classifyId)
+			if err != nil {
+				return nil, err
+			}
+
+			if id == 0 {
+				classifyIdList = append(classifyIdList, classifyId)
+			} else {
+				childrenClassifyIdList, err := GetAllClassifyIdsByParentId(id)
+				if err != nil {
+					return nil, err
+				}
+				classifyIdList = append(classifyIdList, childrenClassifyIdList...)
+			}
+		}
 		condition += ` and t1.classify_id in (` + utils.GetOrmInReplace(len(classifyIdList)) + `)`
 		for _, classifyId := range classifyIdList {
 			pars = append(pars, classifyId)
@@ -190,7 +207,7 @@ func DocumentReportList(userId, documentType int, chartPermissionIdList []string
 		}
 	}
 	if keyword != "" {
-		condition += ` and (t1.title like ? or t1.sys_user_name like ? )`
+		condition += ` and (t1.title like ? or t1.sys_user_name like ?) `
 		pars = append(pars, "%"+keyword+"%", "%"+keyword+"%")
 	}
 
@@ -209,7 +226,7 @@ func DocumentReportList(userId, documentType int, chartPermissionIdList []string
 	if orderField != "" && orderType != "" {
 		condition += ` order by t1.` + orderField + ` ` + orderType
 	} else {
-		condition += ` order by t1.modify_time desc`
+		condition += ` order by t1.report_update_time desc`
 	}
 
 	outsideReportList, err := document_manage_model.GetOutsideReportListByCondition(condition, pars, startSize, pageSize)
@@ -240,6 +257,30 @@ func DocumentReportList(userId, documentType int, chartPermissionIdList []string
 	return &reportPage, nil
 }
 
+// GetAllClassifyIdsByParentId 递归查询子分类
+func GetAllClassifyIdsByParentId(parentId int) ([]string, error) {
+	var classifyIdList []string
+
+	// 获取子分类
+	classifyList, err := models.GetClassifyListByParentId(parentId)
+	if err != nil {
+		return nil, err
+	}
+
+	// 遍历子分类
+	for _, classify := range classifyList {
+		classifyIdList = append(classifyIdList, strconv.Itoa(classify.Id))
+		// 递归调用
+		subClassifyIds, err := GetAllClassifyIdsByParentId(classify.Id)
+		if err != nil {
+			return nil, err
+		}
+		classifyIdList = append(classifyIdList, subClassifyIds...)
+	}
+
+	return classifyIdList, nil
+}
+
 func RuiSiReportList(classifyIdFirst, classifyIdSecond, classifyIdThird []string, keyword, orderField, orderType string, startSize, pageSize int) (*models.ReportListResp, error) {
 	logs.Info("RuiSiReportList")