<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
|
<mapper namespace="kr.wisestone.owl.mapper.ProjectMapper">
|
|
<!--<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_user pru on pru.project_role_id = pr.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 pru.user_id = #{loginUserId}
|
<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}
|
ORDER BY p.id desc
|
<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 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
|
<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>
|
</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
|
COUNT(DISTINCT p.id)
|
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
|
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 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 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>
|
|
<choose>
|
<when test="myDepartmentIds.size != 0">
|
AND prd.department_id IN
|
<foreach collection="myDepartmentIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</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}
|
</select>
|
|
<select id="findByWorkspaceManager" resultType="java.util.HashMap" parameterType="kr.wisestone.owl.web.condition.ProjectCondition">
|
SELECT
|
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
|
LEFT JOIN project_closure pc ON p.id = pc.project_id
|
WHERE 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="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 p.workspace_id = #{workspaceId}
|
<if test="page != null and !page.equals('')">
|
ORDER BY p.id desc
|
limit #{pageSize} offset #{page};
|
</if>
|
</select>
|
|
|
<select id="findByWorkspaceManagerAll" resultType="java.util.HashMap" parameterType="kr.wisestone.owl.web.condition.ProjectCondition">
|
SELECT
|
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
|
LEFT JOIN project_closure pc ON p.id = pc.project_id
|
WHERE 1=1
|
<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>
|
AND p.workspace_id = #{workspaceId}
|
</select>
|
|
|
<select id="countByWorkspaceManager" resultType="java.lang.Long" parameterType="kr.wisestone.owl.web.condition.ProjectCondition">
|
SELECT
|
COUNT(DISTINCT p.id)
|
FROM
|
project p
|
LEFT JOIN project_closure pc ON p.id = pc.project_id
|
WHERE 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="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 p.workspace_id = #{workspaceId}
|
</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_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
|
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"
|
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_user pru on pru.project_role_id = pr.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
|
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"
|
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 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},'%')
|
</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
|
DISTINCT p.id as id
|
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
|
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 user_department ud on ud.department_id = prd.department_id
|
WHERE 1=1
|
AND p.id = #{id}
|
</select>
|
|
<select id="findChildrenProject" resultType="java.util.HashMap" parameterType="long">
|
SELECT
|
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
|
FROM
|
project p
|
LEFT JOIN project_closure pc ON p.id = pc.project_id
|
WHERE pc.parent_project_id = #{parent_project_id}
|
</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_department 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_department 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>
|
|
|
</mapper>
|