From a792396d2e2573419cc7308ede32f84b4578d6e9 Mon Sep 17 00:00:00 2001 From: 이민희 <mhlee@maprex.co.kr> Date: 화, 14 12월 2021 13:32:19 +0900 Subject: [PATCH] 이슈 Tree 목록 중복 이슈 필터링 수정 --- src/main/resources/mybatis/query-template/issue-template.xml | 94 ++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 80 insertions(+), 14 deletions(-) diff --git a/src/main/resources/mybatis/query-template/issue-template.xml b/src/main/resources/mybatis/query-template/issue-template.xml index 6e07ef3..ba47a55 100644 --- a/src/main/resources/mybatis/query-template/issue-template.xml +++ b/src/main/resources/mybatis/query-template/issue-template.xml @@ -45,6 +45,8 @@ LEFT OUTER JOIN issue_custom_field_value issue_custom FORCE INDEX(issueIdIndex) ON issue.id = issue_custom.issue_id LEFT OUTER JOIN issue_department isd FORCE INDEX(issueIdIndex) ON issue.id = isd.issue_id LEFT OUTER JOIN issue_user issue_user FORCE INDEX(issueIdIndex) ON issue.id = issue_user.issue_id + LEFT OUTER JOIN user_department ud ON ud.department_id = isd.department_id + LEFT OUTER JOIN department d ON d.id = isd.department_id LEFT OUTER JOIN (SELECT issue_id, COUNT(id) as attachedFileCount FROM attached_file GROUP BY issue_id) temp_attached_file on (temp_attached_file.issue_id = issue.id) LEFT OUTER JOIN (SELECT issue_id, COUNT(id) as issueCommentCount FROM issue_comment GROUP BY issue_id) @@ -66,6 +68,7 @@ OR priority.name like CONCAT('%',#{keyWord},'%') OR severity.name like CONCAT('%',#{keyWord},'%') OR issue_custom.use_value like CONCAT('%',#{keyWord},'%') + OR d.department_name like CONCAT('%',#{keyWord},'%') </if> <if test="title != null and !title.equals('')"> @@ -104,7 +107,13 @@ ANd issue.complete_date <![CDATA[ <= ]]> #{endCompleteDate} </if> - <if test="hideIssue != null and hideIssue == true"> + <if test="combinationIssueNumber == null or combinationIssueNumber.equals('')"> + <if test="hideDownIssue != null and hideDownIssue == true"> + AND issue.parent_issue_id IS NULL + </if> + </if> + + <if test="hideCompleteIssue != null and hideCompleteIssue == true"> AND issue_status.issue_status_type != 'CLOSE' </if> @@ -172,6 +181,15 @@ </choose> <choose> + <when test="departmentIds.size != 0 and myDepartmentIds != null and myDepartmentIds.size != 0"> + AND isd.department_id IN + <foreach collection="myDepartmentIds" item="item" index="index" separator="," open="(" close=")"> + #{item} + </foreach> + </when> + </choose> + + <choose> <when test="registerIds.size != 0"> AND issue.register_id IN <foreach collection="registerIds" item="item" index="index" separator="," open="(" close=")"> @@ -196,9 +214,6 @@ </foreach> </when> </choose> - <if test="combinationIssueNumber == null or combinationIssueNumber.equals('')"> - AND issue.parent_issue_id IS NULL - </if> AND issue.reverse_index <![CDATA[ < ]]> 0 AND workspace.id = #{workspaceId} GROUP BY issue.id @@ -208,7 +223,7 @@ </if> </select> - <select id="findByDepartment" resultType="java.util.HashMap" parameterType="kr.wisestone.owl.web.condition.IssueCondition"> + <!--<select id="findByDepartment" resultType="java.util.HashMap" parameterType="kr.wisestone.owl.web.condition.IssueCondition"> SELECT DISTINCT issue.id as id, issue.register_id as registerId, @@ -401,7 +416,7 @@ <if test="page != null and !page.equals('')"> limit #{pageSize} offset #{page}; </if> - </select> + </select>--> <!--<select id="count" resultType="java.lang.Long" parameterType="kr.wisestone.owl.web.condition.IssueCondition"> SELECT @@ -540,11 +555,42 @@ SELECT COUNT(DISTINCT issue.id) FROM issue issue - LEFT OUTER JOIN issue_department isd ON issue.id = isd.issue_id - LEFT OUTER JOIN issue_status iss ON iss.id = issue.issue_status_id + INNER JOIN project project FORCE INDEX(workspaceIdIndex) ON issue.project_id = project.id + INNER JOIN workspace workspace ON workspace.id = project.workspace_id + INNER JOIN issue_status issue_status FORCE INDEX(PRIMARY) ON issue.issue_status_id = issue_status.id + INNER JOIN issue_type issue_type FORCE INDEX(PRIMARY) ON issue.issue_type_id = issue_type.id + INNER JOIN priority priority FORCE INDEX(PRIMARY) ON issue.priority_id = priority.id + INNER JOIN severity severity FORCE INDEX(PRIMARY) ON issue.severity_id = severity.id + LEFT OUTER JOIN issue_custom_field_value issue_custom FORCE INDEX(issueIdIndex) ON issue.id = issue_custom.issue_id + LEFT OUTER JOIN issue_department isd FORCE INDEX(issueIdIndex) ON issue.id = isd.issue_id + LEFT OUTER JOIN issue_user issue_user FORCE INDEX(issueIdIndex) ON issue.id = issue_user.issue_id + LEFT OUTER JOIN user_department ud ON ud.department_id = isd.department_id + LEFT OUTER JOIN department d ON d.id = isd.department_id + LEFT OUTER JOIN (SELECT issue_id, COUNT(id) as attachedFileCount FROM attached_file GROUP BY issue_id) + temp_attached_file on (temp_attached_file.issue_id = issue.id) + LEFT OUTER JOIN (SELECT issue_id, COUNT(id) as issueCommentCount FROM issue_comment GROUP BY issue_id) + temp_issue_comment on (temp_issue_comment.issue_id = issue.id) + LEFT OUTER JOIN user user ON issue_user.user_id = user.id WHERE 1=1 - AND issue.parent_issue_id IS NULL - <if test="title != null and !title.equals('') "> + <if test="keyWord != null and !keyWord.equals('') "> + AND issue.title like CONCAT('%',#{keyWord},'%') + OR issue.description like CONCAT('%',#{keyWord},'%') + OR issue.start_date like CONCAT('%',#{keyWord},'%') + OR issue.complete_date like CONCAT('%',#{keyWord},'%') + OR issue.issue_number like CONCAT('%',#{keyWord},'%') + OR issue.register_date like CONCAT('%',#{keyWord},'%') + OR project.name like CONCAT('%',#{keyWord},'%') + OR project.project_key like CONCAT('%',#{keyWord},'%') + OR issue_type.name like CONCAT('%',#{keyWord},'%') + OR issue_status.issue_status_type like CONCAT('%',#{keyWord},'%') + OR issue_status.name like CONCAT('%',#{keyWord},'%') + OR priority.name like CONCAT('%',#{keyWord},'%') + OR severity.name like CONCAT('%',#{keyWord},'%') + OR issue_custom.use_value like CONCAT('%',#{keyWord},'%') + OR d.department_name like CONCAT('%',#{keyWord},'%') + </if> + + <if test="title != null and !title.equals('')"> AND issue.title like CONCAT('%',#{title},'%') </if> @@ -580,8 +626,14 @@ ANd issue.complete_date <![CDATA[ <= ]]> #{endCompleteDate} </if> - <if test="hideIssue != null and hideIssue == true"> - AND iss.issue_status_type != 'CLOSE' + <if test="combinationIssueNumber == null or combinationIssueNumber.equals('')"> + <if test="hideDownIssue != null and hideDownIssue == true"> + AND issue.parent_issue_id IS NULL + </if> + </if> + + <if test="hideCompleteIssue != null and hideCompleteIssue == true"> + AND issue_status.issue_status_type != 'CLOSE' </if> <choose> @@ -639,6 +691,15 @@ </choose> <choose> + <when test="departmentIds.size != 0 and myDepartmentIds != null and myDepartmentIds.size != 0"> + AND isd.department_id IN + <foreach collection="myDepartmentIds" item="item" index="index" separator="," open="(" close=")"> + #{item} + </foreach> + </when> + </choose> + + <choose> <when test="registerIds.size != 0"> AND issue.register_id IN <foreach collection="registerIds" item="item" index="index" separator="," open="(" close=")"> @@ -672,7 +733,6 @@ LEFT OUTER JOIN issue_department isd ON issue.id = isd.issue_id LEFT OUTER JOIN issue_status iss ON iss.id = issue.issue_status_id WHERE 1=1 - AND issue.parent_issue_id IS NULL <if test="title != null and !title.equals('') "> AND issue.title like CONCAT('%',#{title},'%') </if> @@ -709,7 +769,13 @@ ANd issue.complete_date <![CDATA[ <= ]]> #{endCompleteDate} </if> - <if test="hideIssue != null and hideIssue == true"> + <if test="combinationIssueNumber == null or combinationIssueNumber.equals('')"> + <if test="hideDownIssue != null and hideDownIssue == true"> + AND issue.parent_issue_id IS NULL + </if> + </if> + + <if test="hideCompleteIssue != null and hideCompleteIssue == true"> AND iss.issue_status_type != 'CLOSE' </if> -- Gitblit v1.8.0