From 12a790240ef0301f839a55e1846ed0c5a32dffee Mon Sep 17 00:00:00 2001
From: jhjang <jhjang@maprex.co.kr>
Date: 화, 07 12월 2021 13:29:34 +0900
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 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">
+        &lt;!&ndash;    �봽濡쒖젥�듃�뿉 �뿰寃곕맂 �궗�슜�옄 �젙�쓽 �븘�뱶 �젙蹂� �궘�젣   &ndash;&gt;
+        DELETE FROM issue_type_custom_field WHERE project_id = #{projectId};
+
+        <choose>
+            <when test="projectRoleIds.size != 0">
+                &lt;!&ndash;    �봽濡쒖젥�듃 李몄뿬 �궗�슜�옄 �궘�젣  &ndash;&gt;
+                DELETE FROM project_role_user WHERE project_role_id IN (
+                <foreach collection="projectRoleIds" item="item" index="index" separator="," open="" close="">
+                    #{item}
+                </foreach>
+                );
+
+                &lt;!&ndash;    �봽濡쒖젥�듃 沅뚰븳 �뿰寃� �젙蹂� �궘�젣  &ndash;&gt;
+                DELETE FROM project_role_permission WHERE project_role_id IN(
+                <foreach collection="projectRoleIds" item="item" index="index" separator="," open="" close="">
+                    #{item}
+                </foreach>
+                );
+            </when>
+        </choose>
+
+        &lt;!&ndash;    �봽濡쒖젥�듃 �뿭�븷 �궘�젣  &ndash;&gt;
+        DELETE FROM project_role WHERE project_id = #{projectId};
+
+        &lt;!&ndash;    �씠�뒋 怨좎쑀 踰덊샇 �깮�꽦 �젙蹂� �궘�젣  &ndash;&gt;
+        DELETE FROM issue_number_generator WHERE project_id = #{projectId};
+
+        &lt;!&ndash;    �씠�뒋 �씠�젰 �젙蹂� �궘�젣 &ndash;&gt;
+        DELETE FROM issue_history WHERE project_id = #{projectId};
+
+        &lt;!&ndash;    �씠�뒋 踰꾩쟾 �젙蹂� �궘�젣 &ndash;&gt;
+        DELETE FROM issue_version WHERE project_id = #{projectId};
+
+        &lt;!&ndash;    �뾽臾� 怨듦컙�뿉 珥덈��븳 �봽濡쒖젥�듃 �젙蹂� �궘�젣   &ndash;&gt;
+        DELETE FROM user_invite_project WHERE project_id = #{projectId};
+
+        <choose>
+            <when test="issueIds.size != 0">
+                &lt;!&ndash;    �씠�뒋 �궗�슜�옄 �젙�쓽 �븘�뱶 �젙蹂� �궘�젣  &ndash;&gt;
+                DELETE FROM issue_custom_field_value WHERE issue_id IN (
+                <foreach collection="issueIds" item="item" index="index" separator="," open="" close="">
+                    #{item}
+                </foreach>
+                );
+
+                &lt;!&ndash;    �씠�뒋 �뙎湲� �궘�젣    &ndash;&gt;
+                DELETE FROM issue_comment WHERE issue_id IN (
+                <foreach collection="issueIds" item="item" index="index" separator="," open="" close="">
+                    #{item}
+                </foreach>
+                );
+
+                &lt;!&ndash;    �씠�뒋 由ъ뒪�겕 �젙蹂� �궘�젣    &ndash;&gt;
+                DELETE FROM issue_risk WHERE issue_id IN (
+                <foreach collection="issueIds" item="item" index="index" separator="," open="" close="">
+                    #{item}
+                </foreach>
+                );
+
+                &lt;!&ndash;    �씠�뒋 �떞�떦�옄 �젙蹂� �궘�젣    &ndash;&gt;
+                DELETE FROM issue_user WHERE issue_id IN (
+                <foreach collection="issueIds" item="item" index="index" separator="," open="" close="">
+                    #{item}
+                </foreach>
+                );
+
+                &lt;!&ndash;    愿��떖 �씠�뒋 �젙蹂� �궘�젣 &ndash;&gt;
+                DELETE FROM user_like_issue WHERE issue_id IN (
+                <foreach collection="issueIds" item="item" index="index" separator="," open="" close="">
+                    #{item}
+                </foreach>
+                );
+
+                &lt;!&ndash;    �씠�뒋 諛쒖깮 �삁�빟 �젙蹂� �궘�젣  &ndash;&gt;
+                DELETE FROM issue_reservation WHERE issue_id IN (
+                <foreach collection="issueIds" item="item" index="index" separator="," open="" close="">
+                    #{item}
+                </foreach>
+                );
+
+            </when>
+        </choose>
+
+        &lt;!&ndash;    �씠�뒋 怨좎쑀 踰덊샇 �깮�꽦 �젙蹂� �궘�젣  &ndash;&gt;
+        DELETE FROM issue_number_generator WHERE project_id = #{projectId};
+
+        &lt;!&ndash;    �씠�뒋 �궘�젣   &ndash;&gt;
+        DELETE FROM issue WHERE project_id = #{projectId};
+
+        &lt;!&ndash;    �봽濡쒖젥�듃 �궘�젣 &ndash;&gt;
+        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