From 1f48550c5b7ef46fe33c869d60b1e6c758488942 Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 월, 27 12월 2021 17:56:35 +0900
Subject: [PATCH] 하위 프로젝트에만 속해있는 일반회원은 프로젝트 리스트에서 하위 프로젝트가 보이지 않는 현상 수정

---
 src/main/resources/mybatis/query-template/project-template.xml |   93 ++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 88 insertions(+), 5 deletions(-)

diff --git a/src/main/resources/mybatis/query-template/project-template.xml b/src/main/resources/mybatis/query-template/project-template.xml
index ed1a5fd..823b0f3 100644
--- a/src/main/resources/mybatis/query-template/project-template.xml
+++ b/src/main/resources/mybatis/query-template/project-template.xml
@@ -77,7 +77,7 @@
         INNER JOIN user_department ud on ud.department_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
+        WHERE 1=1
         <if test="name != '' and name != null">
             AND p.name like CONCAT('%',#{name},'%')
         </if>
@@ -181,7 +181,6 @@
         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 = ud.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},'%')
         </if>
@@ -340,9 +339,45 @@
         AND p.workspace_id = #{workspaceId}
     </select>
 
+    <!--    �빐�떦 �뾽臾� 怨듦컙�뿉�꽌 吏꾪뻾以묒씤 紐⑤뱺 �봽濡쒖젥�듃瑜� 議고쉶�븳�떎  -->
+    <select id="findByWorkspaceIdAndProjectAll" 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_user pru on pru.project_role_id = pr.id
+        WHERE 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="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,
@@ -359,6 +394,55 @@
         INNER JOIN project_role_user pru on pru.project_role_id = pr.id
         WHERE pru.user_id = #{loginUserId}
         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="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
+        LEFT OUTER JOIN project_role_user pru on pru.project_role_id = pr.id
+        LEFT OUTER JOIN project_role_department prd ON prd.project_role_id = pr.id
+        LEFT OUTER JOIN department d on d.id = prd.department_id
+        WHERE p.workspace_id = #{workspaceId}
+        AND pru.user_id = #{loginUserId}
+        <choose>
+            <when test="myDepartmentIds != null and myDepartmentIds.size != 0">
+                OR prd.department_id IN
+                <foreach collection="myDepartmentIds" item="item" index="index" separator="," open="(" close=")">
+                    #{item}
+                </foreach>
+            </when>
+        </choose>
         <if test="name != '' and name != null">
             AND p.name like CONCAT('%',#{name},'%')
         </if>
@@ -480,7 +564,6 @@
         INNER JOIN user_department ud on ud.department_id = prd.department_id
         LEFT JOIN project_closure pc ON p.id = pc.project_id
         WHERE prd.department_id = ud.department_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},'%')

--
Gitblit v1.8.0