Browse Source

Merge branch 'eta_293_optimize_1114@guomengyuan'

gmy 3 months ago
parent
commit
413e66b062

+ 9 - 4
models/document_manage_model/outside_report.go

@@ -52,8 +52,14 @@ func init() {
 // GetOutsideReportListByConditionCount 根据条件查询列表条数
 func GetOutsideReportListByConditionCount(condition string, pars []interface{}) (count int, err error) {
 	o := orm.NewOrmUsingDB("rddp")
-	sql := `select count(DISTINCT t1.outside_report_id) 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 count(1) from ( 
+			SELECT COUNT( DISTINCT t1.outside_report_id ) 
+			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 += ` ) t`
+
 	err = o.Raw(sql, pars).QueryRow(&count)
 	if err != nil {
 		return 0, err
@@ -63,15 +69,14 @@ func GetOutsideReportListByConditionCount(condition string, pars []interface{})
 }
 
 // GetOutsideReportListByCondition 根据条件查询列表
-func GetOutsideReportListByCondition(condition string, pars []interface{}, currentIndex int, pageSize int) (list []OutsideReport, err error) {
+func GetOutsideReportListByCondition(condition string, pars []interface{}) (list []OutsideReport, 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 += condition
-	sql += ` limit ?, ?`
-	_, err = o.Raw(sql, pars, (currentIndex-1)*pageSize, pageSize).QueryRows(&list)
+	_, err = o.Raw(sql, pars).QueryRows(&list)
 	if err != nil {
 		return nil, err
 	}

+ 7 - 2
models/permission.go

@@ -3,6 +3,7 @@ package models
 import (
 	"eta/eta_api/utils"
 	"github.com/beego/beego/v2/client/orm"
+	"strconv"
 )
 
 // ChartPermissionSearchKeyWordMapping 权限相关
@@ -130,7 +131,11 @@ func GetPermissionByClassifyId(classifyId int) (items []*ChartPermissionSearchKe
 
 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; "
+	sql := `SELECT classify_id 
+			FROM chart_permission_search_key_word_mapping 
+				WHERE  chart_permission_id IN (` + utils.GetOrmInReplace(len(chartPermissionIdList)) + `) 
+			GROUP BY classify_id
+			HAVING COUNT(DISTINCT chart_permission_id) = ` + strconv.Itoa(len(chartPermissionIdList)) + ``
 	_, err = o.Raw(sql, chartPermissionIdList).QueryRows(&classifyIds)
 	return
-}
+}

+ 8 - 4
services/document_manage_service/document_manage_service.go

@@ -135,9 +135,7 @@ func DocumentReportList(documentType int, chartPermissionIdList []string, classi
 				return nil, err
 			}
 
-			if id == 0 {
-				classifyIdList = append(classifyIdList, classifyId)
-			} else {
+			if id > 0 {
 				childrenClassifyIdList, err := GetAllClassifyIdsByParentId(id)
 				if err != nil {
 					return nil, err
@@ -160,6 +158,9 @@ func DocumentReportList(documentType int, chartPermissionIdList []string, classi
 		condition += ` and (t1.title like ? or t1.sys_user_name like ?) `
 		pars = append(pars, "%"+keyword+"%", "%"+keyword+"%")
 	}
+	if len(chartPermissionIdList) > 0 {
+		condition += ` GROUP BY t1.outside_report_id HAVING COUNT(DISTINCT t2.chart_permission_id) = ` + strconv.Itoa(len(chartPermissionIdList))
+	}
 
 	count, err := document_manage_model.GetOutsideReportListByConditionCount(condition, pars)
 	if err != nil {
@@ -179,7 +180,10 @@ func DocumentReportList(documentType int, chartPermissionIdList []string, classi
 		condition += ` order by t1.report_update_time desc`
 	}
 
-	outsideReportList, err := document_manage_model.GetOutsideReportListByCondition(condition, pars, startSize, pageSize)
+	condition += ` LIMIT ?,?`
+	pars = append(pars, (startSize-1)*pageSize, pageSize)
+
+	outsideReportList, err := document_manage_model.GetOutsideReportListByCondition(condition, pars)
 	if err != nil {
 		return nil, err
 	}