From 49cc431b9caedd37b10d017867b014658cbeafba Mon Sep 17 00:00:00 2001 From: 이민희 <mhlee@maprex.co.kr> Date: 화, 07 12월 2021 09:31:26 +0900 Subject: [PATCH] - 이슈, 프로젝트 - 담당자 -> 담당부서 수정 - 프로젝트 관리자가 아닐경우 이슈리스트에 본인이 소속된 부서가 담당인 이슈만 표시 --- src/main/resources/mybatis/query-template/project-template.xml | 319 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 310 insertions(+), 9 deletions(-) diff --git a/src/main/resources/mybatis/query-template/project-template.xml b/src/main/resources/mybatis/query-template/project-template.xml index c896e98..100ae59 100644 --- a/src/main/resources/mybatis/query-template/project-template.xml +++ b/src/main/resources/mybatis/query-template/project-template.xml @@ -3,7 +3,7 @@ <mapper namespace="kr.wisestone.owl.mapper.ProjectMapper"> - <select id="find" resultType="java.util.HashMap" parameterType="kr.wisestone.owl.web.condition.ProjectCondition"> + <!--<select id="find" resultType="java.util.HashMap" parameterType="kr.wisestone.owl.web.condition.ProjectCondition"> SELECT DISTINCT p.id as id, p.name as name, @@ -57,9 +57,77 @@ <if test="page != null and !page.equals('')"> limit #{pageSize} offset #{page}; </if> + </select>--> + + <select id="find" resultType="java.util.HashMap" parameterType="kr.wisestone.owl.web.condition.ProjectCondition"> + SELECT + DISTINCT p.id as id, + p.name as name, + p.description as description, + p.status as status, + p.start_date as startDate, + p.end_date as endDate, + p.project_key as projectKey, + pc.parent_project_id as parentProjectId, + CASE p.default_yn WHEN 'Y' THEN 'true' ELSE 'false' END as defaultYn + FROM + project p + INNER JOIN project_role pr on p.id = pr.project_id + INNER JOIN project_role_department prd on prd.project_role_id = pr.id + INNER JOIN department d on d.id = prd.department_id + INNER JOIN workspace ws on ws.id = p.workspace_id + LEFT JOIN project_closure pc ON p.id = pc.project_id + WHERE if (pc.parent_project_id > -1, pc.parent_project_id, -1) = -1 + AND prd.department_id = d.id + <if test="name != '' and name != null"> + AND p.name like CONCAT('%',#{name},'%') + </if> + <choose> + <when test="myDepartmentIds.size != 0"> + AND prd.department_id IN + <foreach collection="myDepartmentIds" item="item" index="index" separator="," open="(" close=")"> + #{item} + </foreach> + </when> + <otherwise> + AND 1 != 1 + </otherwise> + </choose> + + <choose> + <when test="roleTypes.size != 0"> + AND pr.role_type IN + <foreach collection="roleTypes" item="item" index="index" separator="," open="(" close=")"> + #{item} + </foreach> + </when> + </choose> + + <choose> + <when test="statuses.size != 0"> + AND p.status IN + <foreach collection="statuses" item="item" index="index" separator="," open="(" close=")"> + #{item} + </foreach> + </when> + </choose> + + <choose> + <when test="excludeIds.size != 0"> + AND p.id NOT IN + <foreach collection="excludeIds" item="item" index="index" separator="," open="(" close=")"> + #{item} + </foreach> + </when> + </choose> + AND ws.id = #{workspaceId} + ORDER BY p.id desc + <if test="page != null and !page.equals('')"> + limit #{pageSize} offset #{page}; + </if> </select> - <select id="count" resultType="java.lang.Long" parameterType="kr.wisestone.owl.web.condition.ProjectCondition"> + <!--<select id="count" resultType="java.lang.Long" parameterType="kr.wisestone.owl.web.condition.ProjectCondition"> SELECT COUNT(DISTINCT p.id) FROM @@ -69,6 +137,51 @@ INNER JOIN workspace ws on ws.id = p.workspace_id LEFT JOIN project_closure pc on p.id = pc.project_id WHERE pru.user_id = #{loginUserId} + AND if (pc.parent_project_id > -1, pc.parent_project_id, -1) = -1 + <if test="name != '' and name != null"> + AND p.name like CONCAT('%',#{name},'%') + </if> + + <choose> + <when test="roleTypes.size != 0"> + AND pr.role_type IN + <foreach collection="roleTypes" item="item" index="index" separator="," open="(" close=")"> + #{item} + </foreach> + </when> + </choose> + + <choose> + <when test="statuses.size != 0"> + AND p.status IN + <foreach collection="statuses" item="item" index="index" separator="," open="(" close=")"> + #{item} + </foreach> + </when> + </choose> + + <choose> + <when test="excludeIds.size != 0"> + AND p.id NOT IN + <foreach collection="excludeIds" item="item" index="index" separator="," open="(" close=")"> + #{item} + </foreach> + </when> + </choose> + AND ws.id = #{workspaceId} + </select>--> + + <select id="count" resultType="java.lang.Long" parameterType="kr.wisestone.owl.web.condition.ProjectCondition"> + SELECT + COUNT(DISTINCT p.id) + FROM + project p + INNER JOIN project_role pr on p.id = pr.project_id + INNER JOIN project_role_department prd on prd.project_role_id = pr.id + INNER JOIN department d on d.id = prd.department_id + INNER JOIN workspace ws on ws.id = p.workspace_id + LEFT JOIN project_closure pc on p.id = pc.project_id + WHERE prd.department_id = d.id AND if (pc.parent_project_id > -1, pc.parent_project_id, -1) = -1 <if test="name != '' and name != null"> AND p.name like CONCAT('%',#{name},'%') @@ -218,7 +331,7 @@ <!-- �빐�떦 �뾽臾� 怨듦컙�뿉�꽌 李몄뿬�븯怨� �엳�뒗 吏꾪뻾以묒씤 �봽濡쒖젥�듃瑜� 議고쉶�븳�떎 --> - <select id="findByWorkspaceIdAndIncludeProjectAll" resultType="java.util.HashMap" + <!--<select id="findByWorkspaceIdAndIncludeProjectAll" resultType="java.util.HashMap" parameterType="kr.wisestone.owl.web.condition.ProjectCondition"> SELECT DISTINCT p.id as id, @@ -254,10 +367,49 @@ </foreach> </when> </choose> + </select>--> + + <select id="findByWorkspaceIdAndIncludeProjectAll" resultType="java.util.HashMap" + parameterType="kr.wisestone.owl.web.condition.ProjectCondition"> + SELECT + DISTINCT p.id as id, + p.name as name, + p.description as description, + p.status as status, + p.start_date as startDate, + p.end_date as endDate, + p.project_key as projectKey, + CASE p.default_yn WHEN 'Y' THEN 'true' ELSE 'false' END as defaultYn + FROM + project p + INNER JOIN project_role pr on p.id = pr.project_id + INNER JOIN project_role_department prd on prd.project_role_id = pr.id + INNER JOIN department d on d.id = prd.department_id + WHERE prd.department_id = d.id + AND p.workspace_id = #{workspaceId} + <if test="name != '' and name != null"> + AND p.name like CONCAT('%',#{name},'%') + </if> + <choose> + <when test="statuses.size != 0"> + AND p.status IN + <foreach collection="statuses" item="item" index="index" separator="," open="(" close=")"> + #{item} + </foreach> + </when> + </choose> + <choose> + <when test="excludeIds.size != 0"> + AND p.id NOT IN + <foreach collection="excludeIds" item="item" index="index" separator="," open="(" close=")"> + #{item} + </foreach> + </when> + </choose> </select> <!-- �빐�떦 �뾽臾� 怨듦컙�뿉�꽌 李몄뿬�븯怨� �엳�뒗 吏꾪뻾以묒씤 �봽濡쒖젥�듃瑜� 議고쉶�븳�떎 --> - <select id="findByWorkspaceIdAndIncludeProject" resultType="java.util.HashMap" + <!--<select id="findByWorkspaceIdAndIncludeProject" resultType="java.util.HashMap" parameterType="kr.wisestone.owl.web.condition.ProjectCondition"> SELECT DISTINCT p.id as id, @@ -296,9 +448,51 @@ </foreach> </when> </choose> + </select>--> + + <select id="findByWorkspaceIdAndIncludeProject" resultType="java.util.HashMap" + parameterType="kr.wisestone.owl.web.condition.ProjectCondition"> + SELECT + DISTINCT p.id as id, + p.name as name, + p.description as description, + p.status as status, + p.start_date as startDate, + p.end_date as endDate, + p.project_key as projectKey, + pc.parent_project_id as parentProjectId, + CASE p.default_yn WHEN 'Y' THEN 'true' ELSE 'false' END as defaultYn + FROM + project p + INNER JOIN project_role pr on p.id = pr.project_id + INNER JOIN project_role_department prd on prd.project_role_id = pr.id + INNER JOIN department d on d.id = prd.department_id + LEFT JOIN project_closure pc ON p.id = pc.project_id + WHERE prd.department_id = d.id + AND if (pc.parent_project_id > -1, pc.parent_project_id, -1) = -1 + AND p.workspace_id = #{workspaceId} + <if test="name != '' and name != null"> + AND p.name like CONCAT('%',#{name},'%') + </if> + <choose> + <when test="statuses.size != 0"> + AND p.status IN + <foreach collection="statuses" item="item" index="index" separator="," open="(" close=")"> + #{item} + </foreach> + </when> + </choose> + <choose> + <when test="excludeIds.size != 0"> + AND p.id NOT IN + <foreach collection="excludeIds" item="item" index="index" separator="," open="(" close=")"> + #{item} + </foreach> + </when> + </choose> </select> - <select id="checkIncludeProject" resultType="java.util.HashMap" parameterType="kr.wisestone.owl.web.condition.ProjectCondition"> + <!--<select id="checkIncludeProject" resultType="java.util.HashMap" parameterType="kr.wisestone.owl.web.condition.ProjectCondition"> SELECT DISTINCT p.id as id FROM @@ -308,6 +502,18 @@ INNER JOIN user u on u.id = pru.user_id WHERE 1=1 AND p.id = #{id} AND u.id = #{loginUserId} + </select>--> + + <select id="checkIncludeProject" resultType="java.util.HashMap" parameterType="kr.wisestone.owl.web.condition.ProjectCondition"> + SELECT + DISTINCT p.id as id + FROM + project p + INNER JOIN project_role pr on p.id = pr.project_id + INNER JOIN project_role_department prd on prd.project_role_id = pr.id + INNER JOIN department d on d.id = prd.department_id + WHERE 1=1 + AND p.id = #{id} </select> <select id="findChildrenProject" resultType="java.util.HashMap" parameterType="long"> @@ -327,14 +533,109 @@ </select> <!-- �봽濡쒖젥�듃 �궘�젣 --> + <!--<delete id="deleteProject" parameterType="java.util.HashMap"> + <!– �봽濡쒖젥�듃�뿉 �뿰寃곕맂 �궗�슜�옄 �젙�쓽 �븘�뱶 �젙蹂� �궘�젣 –> + DELETE FROM issue_type_custom_field WHERE project_id = #{projectId}; + + <choose> + <when test="projectRoleIds.size != 0"> + <!– �봽濡쒖젥�듃 李몄뿬 �궗�슜�옄 �궘�젣 –> + DELETE FROM project_role_user WHERE project_role_id IN ( + <foreach collection="projectRoleIds" item="item" index="index" separator="," open="" close=""> + #{item} + </foreach> + ); + + <!– �봽濡쒖젥�듃 沅뚰븳 �뿰寃� �젙蹂� �궘�젣 –> + DELETE FROM project_role_permission WHERE project_role_id IN( + <foreach collection="projectRoleIds" item="item" index="index" separator="," open="" close=""> + #{item} + </foreach> + ); + </when> + </choose> + + <!– �봽濡쒖젥�듃 �뿭�븷 �궘�젣 –> + DELETE FROM project_role WHERE project_id = #{projectId}; + + <!– �씠�뒋 怨좎쑀 踰덊샇 �깮�꽦 �젙蹂� �궘�젣 –> + DELETE FROM issue_number_generator WHERE project_id = #{projectId}; + + <!– �씠�뒋 �씠�젰 �젙蹂� �궘�젣 –> + DELETE FROM issue_history WHERE project_id = #{projectId}; + + <!– �씠�뒋 踰꾩쟾 �젙蹂� �궘�젣 –> + DELETE FROM issue_version WHERE project_id = #{projectId}; + + <!– �뾽臾� 怨듦컙�뿉 珥덈��븳 �봽濡쒖젥�듃 �젙蹂� �궘�젣 –> + DELETE FROM user_invite_project WHERE project_id = #{projectId}; + + <choose> + <when test="issueIds.size != 0"> + <!– �씠�뒋 �궗�슜�옄 �젙�쓽 �븘�뱶 �젙蹂� �궘�젣 –> + DELETE FROM issue_custom_field_value WHERE issue_id IN ( + <foreach collection="issueIds" item="item" index="index" separator="," open="" close=""> + #{item} + </foreach> + ); + + <!– �씠�뒋 �뙎湲� �궘�젣 –> + DELETE FROM issue_comment WHERE issue_id IN ( + <foreach collection="issueIds" item="item" index="index" separator="," open="" close=""> + #{item} + </foreach> + ); + + <!– �씠�뒋 由ъ뒪�겕 �젙蹂� �궘�젣 –> + DELETE FROM issue_risk WHERE issue_id IN ( + <foreach collection="issueIds" item="item" index="index" separator="," open="" close=""> + #{item} + </foreach> + ); + + <!– �씠�뒋 �떞�떦�옄 �젙蹂� �궘�젣 –> + DELETE FROM issue_user WHERE issue_id IN ( + <foreach collection="issueIds" item="item" index="index" separator="," open="" close=""> + #{item} + </foreach> + ); + + <!– 愿��떖 �씠�뒋 �젙蹂� �궘�젣 –> + DELETE FROM user_like_issue WHERE issue_id IN ( + <foreach collection="issueIds" item="item" index="index" separator="," open="" close=""> + #{item} + </foreach> + ); + + <!– �씠�뒋 諛쒖깮 �삁�빟 �젙蹂� �궘�젣 –> + DELETE FROM issue_reservation WHERE issue_id IN ( + <foreach collection="issueIds" item="item" index="index" separator="," open="" close=""> + #{item} + </foreach> + ); + + </when> + </choose> + + <!– �씠�뒋 怨좎쑀 踰덊샇 �깮�꽦 �젙蹂� �궘�젣 –> + DELETE FROM issue_number_generator WHERE project_id = #{projectId}; + + <!– �씠�뒋 �궘�젣 –> + DELETE FROM issue WHERE project_id = #{projectId}; + + <!– �봽濡쒖젥�듃 �궘�젣 –> + DELETE FROM project WHERE id = #{projectId}; + + </delete>--> + <delete id="deleteProject" parameterType="java.util.HashMap"> <!-- �봽濡쒖젥�듃�뿉 �뿰寃곕맂 �궗�슜�옄 �젙�쓽 �븘�뱶 �젙蹂� �궘�젣 --> DELETE FROM issue_type_custom_field WHERE project_id = #{projectId}; <choose> <when test="projectRoleIds.size != 0"> - <!-- �봽濡쒖젥�듃 李몄뿬 �궗�슜�옄 �궘�젣 --> - DELETE FROM project_role_user WHERE project_role_id IN ( + <!-- �봽濡쒖젥�듃 李몄뿬 遺��꽌 �궘�젣 --> + DELETE FROM project_role_department WHERE project_role_id IN ( <foreach collection="projectRoleIds" item="item" index="index" separator="," open="" close=""> #{item} </foreach> @@ -387,8 +688,8 @@ </foreach> ); - <!-- �씠�뒋 �떞�떦�옄 �젙蹂� �궘�젣 --> - DELETE FROM issue_user WHERE issue_id IN ( + <!-- �씠�뒋 �떞�떦遺��꽌 �젙蹂� �궘�젣 --> + DELETE FROM issue_department WHERE issue_id IN ( <foreach collection="issueIds" item="item" index="index" separator="," open="" close=""> #{item} </foreach> -- Gitblit v1.8.0