浏览代码

Merge branch 'out_report_2.1' into custom

xiziwen 5 月之前
父节点
当前提交
e54b5a5591

+ 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
+}

+ 40 - 12
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)
+			}
 		}
 	}
 
@@ -1767,9 +1781,7 @@ func GetReportListByCollectListV2(classifyIdFirst, classifyIdSecond, classifyIdT
 		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
 		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
+			FROM report AS b WHERE 1 = 1
 	`
 
 	// 处理关键词
@@ -1818,9 +1830,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)
+			}
 		}
 	}
 

+ 2 - 2
services/document_manage_service/document_manage_service.go

@@ -207,9 +207,9 @@ func DocumentReportList(userId, documentType int, chartPermissionIdList []string
 	}
 
 	if orderField != "" && orderType != "" {
-		condition += ` order by t1.` + orderField + ` ` + orderType
+		condition += ` group by t1.outside_report_id order by t1.` + orderField + ` ` + orderType
 	} else {
-		condition += ` order by t1.modify_time desc`
+		condition += ` group by t1.outside_report_id order by t1.report_update_time desc`
 	}
 
 	outsideReportList, err := document_manage_model.GetOutsideReportListByCondition(condition, pars, startSize, pageSize)