<!DOCTYPE mapper
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
|
<mapper namespace="kr.wisestone.owl.mapper.WidgetMapper">
|
|
<!-- 전체 위젯 -->
|
<!-- 1번 위젯 시작 -->
|
|
<!-- 잔여 이슈 개수 -->
|
<select id="countRemainIssue" resultType="java.lang.Long"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
SELECT
|
COUNT(i.id) FROM issue i
|
WHERE EXISTS(SELECT 1 FROM issue_status iss WHERE iss.issue_status_type != 'CLOSE' AND i.issue_status_id =
|
iss.id)
|
<choose>
|
<when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
|
AND i.project_id IN
|
<foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
</select>
|
|
<!-- 지연 이슈 개수 -->
|
<select id="countTodayDelayIssue" resultType="java.lang.Long"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
SELECT
|
COUNT(i.id) FROM issue i where
|
exists(select 1 from issue_status iss where iss.id = i.issue_status_id and iss.issue_status_type != 'CLOSE')
|
<choose>
|
<when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
|
AND i.project_id IN
|
<foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
AND i.complete_date IS NOT NULL
|
AND i.complete_date <![CDATA[ < ]]> #{completeDate}
|
</select>
|
|
<!-- 할당 이슈 개수 - 담당자 버전 -->
|
<!--<select id="countAssigneeIssue" resultType="java.lang.Long"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
SELECT
|
COUNT(i.id) FROM issue i
|
WHERE EXISTS(SELECT 1 FROM issue_user iu WHERE iu.issue_id = i.id AND iu.user_id = #{loginUserId})
|
AND EXISTS(SELECT 1 FROM issue_status iss WHERE iss.id = i.issue_status_id and iss.issue_status_type != 'CLOSE')
|
<choose>
|
<when test="projectIds.size != 0">
|
AND i.project_id IN
|
<foreach collection="projectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
<choose>
|
<when test="downProjectIds.size != 0">
|
OR i.project_id IN
|
<foreach collection="downProjectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
</select>-->
|
|
<!-- 할당 이슈 개수 - 담당부서 버전 -->
|
<select id="countAssigneeIssue" resultType="java.lang.Long"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
SELECT
|
COUNT(i.id) FROM issue i
|
WHERE EXISTS(SELECT 1 FROM issue_department id WHERE id.issue_id = i.id
|
<choose>
|
<when test="myDepartmentIds.size != 0">
|
AND id.department_id IN
|
<foreach collection="myDepartmentIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
<otherwise>
|
AND 1 != 1
|
</otherwise>
|
</choose>
|
) AND EXISTS(SELECT 1 FROM issue_status iss WHERE iss.id = i.issue_status_id and iss.issue_status_type != 'CLOSE')
|
<choose>
|
<when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
|
AND i.project_id IN
|
<foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
</select>
|
|
<!-- 내가 오늘 등록한 이슈 개수 -->
|
<select id="countTodayRegisterIssue" resultType="java.lang.Long"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
select
|
count(i.id) as todayCount from issue i where
|
i.register_id = #{loginUserId}
|
<choose>
|
<when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
|
AND i.project_id IN
|
<foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
AND i.register_date BETWEEN (CURDATE()) AND (CURDATE() + INTERVAL 1 DAY)
|
</select>
|
|
<!-- 미할당 이슈 개수 -->
|
<!--<select id="countNoAssigneeIssue" resultType="java.lang.Long"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
SELECT
|
COUNT(DISTINCT i.id) FROM issue i
|
LEFT OUTER JOIN issue_user iu ON iu.issue_id = i.id
|
WHERE
|
EXISTS(select 1 from issue_status iss where iss.id = i.issue_status_id and iss.issue_status_type != 'CLOSE')
|
<choose>
|
<when test="meAndDownProjectIds.size != 0">
|
AND i.project_id IN
|
<foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
AND iu.id IS NULL
|
</select>-->
|
|
<!-- 미할당 이슈 개수 (담당부서 버전) -->
|
<select id="countNoAssigneeIssue" resultType="java.lang.Long"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
SELECT
|
COUNT(DISTINCT i.id) FROM issue i
|
LEFT OUTER JOIN issue_department id ON id.issue_id = i.id
|
WHERE
|
EXISTS(select 1 from issue_status iss where iss.id = i.issue_status_id and iss.issue_status_type != 'CLOSE')
|
<choose>
|
<when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
|
AND i.project_id IN
|
<foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
AND id.id IS NULL
|
</select>
|
|
<!-- 완료된 이슈 개수 -->
|
<select id="countCompleteIssue" resultType="java.lang.Long"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
select
|
count(*) as issueCount from issue i
|
inner join issue_status iss on iss.id = i.issue_status_id
|
where iss.issue_status_type = 'CLOSE'
|
<choose>
|
<when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
|
AND i.project_id IN
|
<foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
</select>
|
|
<!-- 1번 위젯 끝 -->
|
|
<!-- 2번 위젯 시작 -->
|
|
<!-- 전체 이슈 처리현황 -->
|
<select id="findIssueComplete" resultType="java.util.HashMap"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
select (DATE_FORMAT(i.modify_date, '%Y-%m-%d')) as modifyDate,
|
count(*) as issueCount from issue i
|
inner join issue_status iss on iss.id = i.issue_status_id
|
where iss.issue_status_type = 'CLOSE'
|
and i.modify_date between #{searchStartDate} and #{searchEndDate}
|
<choose>
|
<when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
|
AND i.project_id IN
|
<foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
group by (DATE_FORMAT(i.modify_date, '%Y-%m-%d'))
|
</select>
|
|
<!-- 전체 이슈 개수 -->
|
<select id="countTotalIssue" resultType="java.lang.Long"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
select count(distinct i.id) from issue i
|
inner join issue_status iss on iss.id = i.issue_status_id
|
where 1=1
|
<choose>
|
<when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
|
AND i.project_id IN
|
<foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
</select>
|
|
<!-- 2번 위젯 끝 -->
|
|
|
<!-- 3번 위젯 시작 -->
|
|
<!-- 진행중인 프로젝트 현황 (담당자 버전) -->
|
<!--<select id="findProjectProgress" resultType="java.util.HashMap"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
select
|
p.id as id,
|
p.name as name,
|
replace(p.start_date, "-", ".") as startDate,
|
replace(p.end_date, "-", ".") as endDate,
|
count(case when iss.issue_status_type = 'CLOSE' THEN 1 END) as 'close',
|
count(case when iss.issue_status_type != 'CLOSE' THEN 1 END) as 'remain',
|
(select concat(u.name, "%", u.account, "%", u.profile) from user u
|
inner join project_role_user pru on pru.user_id = u.id
|
inner join project_role pr on pr.id = pru.project_role_id
|
where pr.project_id = p.id and pr.role_type = '02'
|
) as managerInfo
|
,
|
(
|
select count(distinct(u.id)) from user u
|
inner join project_role_user pru on pru.user_id = u.id
|
inner join project_role pr on pr.id = pru.project_role_id
|
where pr.project_id = p.id and pr.role_type = '01'
|
) as teamCount
|
from
|
project p
|
left outer join issue i on p.id = i.project_id
|
left outer join issue_status iss on iss.id = i.issue_status_id
|
WHERE 1=1
|
<choose>
|
<when test="projectIds.size != 0">
|
AND p.id IN
|
<foreach collection="projectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
GROUP by p.id
|
</select>-->
|
|
<!-- 진행중인 프로젝트 현황 (담당부서 버전) -->
|
<select id="findProjectProgress" resultType="java.util.HashMap"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
select
|
p.id as id,
|
p.name as name,
|
replace(p.start_date, "-", ".") as startDate,
|
replace(p.end_date, "-", ".") as endDate,
|
count(case when iss.issue_status_type = 'CLOSE' THEN 1 END) as 'close',
|
count(case when iss.issue_status_type != 'CLOSE' THEN 1 END) as 'remain',
|
(select concat(u.name, "%", u.account, "%", u.profile) from user u
|
inner join project_role_user pru on pru.user_id = u.id
|
inner join project_role pr on pr.id = pru.project_role_id
|
where pr.project_id = p.id and pr.role_type = '02'
|
) as managerInfo
|
,
|
(
|
select count(distinct(d.id)) from department d
|
inner join project_role_department prd on prd.department_id = d.id
|
inner join project_role pr on pr.id = prd.project_role_id
|
where pr.project_id = p.id and pr.role_type = '01'
|
) as teamCount
|
from
|
project p
|
left outer join issue i on p.id = i.project_id
|
left outer join issue_status iss on iss.id = i.issue_status_id
|
WHERE 1=1
|
<choose>
|
<when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
|
AND p.id IN
|
<foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
GROUP by p.id
|
</select>
|
|
<!-- 진행중인 프로젝트 현황(전체) (담당자 버전) -->
|
<!--<select id="findProjectProgressAll" resultType="java.util.HashMap"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
select
|
p.id as id,
|
p.name as name,
|
replace(p.start_date, "-", ".") as startDate,
|
replace(p.end_date, "-", ".") as endDate,
|
count(case when iss.issue_status_type = 'CLOSE' THEN 1 END) as 'close',
|
count(case when iss.issue_status_type != 'CLOSE' THEN 1 END) as 'remain',
|
(select concat(u.name, "%", u.account, "%", u.profile) from user u
|
inner join project_role_user pru on pru.user_id = u.id
|
inner join project_role pr on pr.id = pru.project_role_id
|
where pr.project_id = p.id and pr.role_type = '02'
|
) as managerInfo
|
,
|
(
|
select count(distinct(u.id)) from user u
|
inner join project_role_user pru on pru.user_id = u.id
|
inner join project_role pr on pr.id = pru.project_role_id
|
where pr.project_id = p.id and pr.role_type = '01'
|
) as teamCount
|
from
|
project p
|
left outer join issue i on p.id = i.project_id
|
left outer join issue_status iss on iss.id = i.issue_status_id
|
WHERE 1=1
|
GROUP by p.id
|
</select>-->
|
|
<!-- 진행중인 프로젝트 현황(전체) (담당부서 버전) -->
|
<select id="findProjectProgressAll" resultType="java.util.HashMap"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
select
|
p.id as id,
|
p.name as name,
|
replace(p.start_date, "-", ".") as startDate,
|
replace(p.end_date, "-", ".") as endDate,
|
count(case when iss.issue_status_type = 'CLOSE' THEN 1 END) as 'close',
|
count(case when iss.issue_status_type != 'CLOSE' THEN 1 END) as 'remain',
|
(select concat(u.name, "%", u.account, "%", u.profile) from user u
|
inner join project_role_user pru on pru.user_id = u.id
|
inner join project_role pr on pr.id = pru.project_role_id
|
where pr.project_id = p.id and pr.role_type = '02'
|
) as managerInfo
|
,
|
(
|
select count(distinct(d.id)) from department d
|
inner join project_role_department prd on prd.department_id = d.id
|
inner join project_role pr on pr.id = prd.project_role_id
|
where pr.project_id = p.id and pr.role_type = '01'
|
) as teamCount
|
from
|
project p
|
left outer join issue i on p.id = i.project_id
|
left outer join issue_status iss on iss.id = i.issue_status_id
|
WHERE 1=1
|
GROUP by p.id
|
</select>
|
|
<!-- 3번 위젯 끝 -->
|
|
|
<!-- 4번 위젯 시작 -->
|
|
<!--내가 오늘 할당받은 이슈 개수 - 담당자 버전-->
|
<!--<select id="countTodayMyAssigneeIssue" resultType="java.lang.Long"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
select
|
count(i.id) as todayCount from issue i where
|
exists(select 1 from issue_user iu where iu.issue_id = i.id and iu.user_id = #{loginUserId} and iu.register_date
|
BETWEEN (CURDATE()) AND (CURDATE() + INTERVAL 1 DAY))
|
<choose>
|
<when test="projectIds.size != 0">
|
AND i.project_id IN
|
<foreach collection="projectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
</select>-->
|
|
<!-- 내가 오늘 할당받은 이슈 개수 - 담당부서 버전 -->
|
<select id="countTodayMyAssigneeIssue" resultType="java.lang.Long"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
select
|
count(i.id) as todayCount from issue i where
|
exists(select 1 from issue_department id where id.issue_id = i.id
|
<choose>
|
<when test="myDepartmentIds.size != 0">
|
AND id.department_id IN
|
<foreach collection="myDepartmentIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
<otherwise>
|
AND 1 != 1
|
</otherwise>
|
</choose>
|
and id.register_date
|
BETWEEN (CURDATE()) AND (CURDATE() + INTERVAL 1 DAY))
|
<choose>
|
<when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
|
AND i.project_id IN
|
<foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
</select>
|
|
<!-- 내가 담당하는 이슈 개수 - 담당자 -->
|
<!--<select id="countMyAssigneeIssue" resultType="java.lang.Long"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
select
|
count(distinct i.id)
|
from issue i
|
inner join issue_user iu on iu.issue_id = i.id
|
inner join issue_status iss on iss.id = i.issue_status_id
|
WHERE 1=1
|
<choose>
|
<when test="projectIds.size != 0">
|
AND i.project_id IN
|
<foreach collection="projectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
and iu.user_id = #{loginUserId}
|
and iss.issue_status_type != 'CLOSE'
|
</select>-->
|
|
<!-- 내가 담당하는 이슈 개수 - 담당부서 -->
|
<select id="countMyAssigneeIssue" resultType="java.lang.Long"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
select
|
count(distinct i.id)
|
from issue i
|
inner join issue_department id on id.issue_id = i.id
|
inner join issue_status iss on iss.id = i.issue_status_id
|
WHERE 1=1
|
<choose>
|
<when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
|
AND i.project_id IN
|
<foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
<choose>
|
<when test="myDepartmentIds.size != 0">
|
AND id.department_id IN
|
<foreach collection="myDepartmentIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
<otherwise>
|
AND 1 != 1
|
</otherwise>
|
</choose>
|
And iss.issue_status_type != 'CLOSE'
|
</select>
|
|
<!-- 내가 담당하는 이슈 -->
|
<!--<select id="findMyAssigneeIssue" resultType="java.util.HashMap"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
select
|
distinct i.id as id,
|
i.title as title,
|
CONCAT(p.project_key, '-', i.issue_number) AS issueKey,
|
p.project_key as projectKey,
|
i.issue_number as issueNumber,
|
iss.name as issueStatusName,
|
replace(i.complete_date, "-", ".") as completeDate,
|
replace(SUBSTRING(i.register_date, 1, 10), "-", ".") as registerDate
|
from issue i
|
inner join issue_user iu on iu.issue_id = i.id
|
inner join issue_status iss on iss.id = i.issue_status_id
|
inner join project p on p.id = i.project_id
|
WHERE 1=1
|
<choose>
|
<when test="projectIds.size != 0">
|
AND p.id IN
|
<foreach collection="projectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
and iu.user_id = #{loginUserId}
|
and iss.issue_status_type != 'CLOSE'
|
GROUP by i.id
|
<if test="page != null and !page.equals('')">
|
limit #{pageSize} offset #{page};
|
</if>
|
</select>-->
|
|
<!-- 내가 담당하는 이슈 - 담당부서 -->
|
<select id="findMyAssigneeIssue" resultType="java.util.HashMap"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
select
|
distinct i.id as id,
|
i.title as title,
|
p.name as projectName,
|
CONCAT(p.project_key, '-', i.issue_number) AS issueKey,
|
p.project_key as projectKey,
|
i.issue_number as issueNumber,
|
iss.name as issueStatusName,
|
replace(i.complete_date, "-", ".") as completeDate,
|
replace(SUBSTRING(i.register_date, 1, 10), "-", ".") as registerDate
|
from issue i
|
inner join issue_department id on id.issue_id = i.id
|
inner join issue_status iss on iss.id = i.issue_status_id
|
inner join project p on p.id = i.project_id
|
WHERE 1=1
|
<choose>
|
<when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
|
AND p.id IN
|
<foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
<choose>
|
<when test="myDepartmentIds.size != 0">
|
AND id.department_id IN
|
<foreach collection="myDepartmentIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
<otherwise>
|
AND 1 != 1
|
</otherwise>
|
</choose>
|
and iss.issue_status_type != 'CLOSE'
|
GROUP by i.id
|
<if test="page != null and !page.equals('')">
|
limit #{pageSize} offset #{page};
|
</if>
|
</select>
|
|
<!-- 4번 위젯 끝 -->
|
|
|
<!-- 5번 위젯 시작 -->
|
|
<!-- 번복되는 상태 변경 및 빈번한 담당자 변경 개수 -->
|
<!--<select id="countChangeStatusAndAssigneeIssue" resultType="java.util.HashMap"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
select
|
count(case when ir.change_assignee_count > 3 then 1 end) as changeAssigneeCount,
|
count(case when ir.change_issue_status_count > 3 then 1 end) as changeIssueStatusCount
|
from issue i
|
inner join issue_risk ir on ir.issue_id = i.id
|
inner join issue_status iss on iss.id = i.issue_status_id
|
where iss.issue_status_type != 'CLOSE'
|
<choose>
|
<when test="projectIds.size != 0">
|
AND i.project_id IN
|
<foreach collection="projectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
</select>-->
|
|
<select id="countChangeStatusAndDepartmentIssue" resultType="java.util.HashMap"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
select
|
count(case when ir.change_department_count > 3 then 1 end) as changeDepartmentCount,
|
count(case when ir.change_issue_status_count > 3 then 1 end) as changeIssueStatusCount
|
from issue i
|
inner join issue_risk ir on ir.issue_id = i.id
|
inner join issue_status iss on iss.id = i.issue_status_id
|
where iss.issue_status_type != 'CLOSE'
|
<choose>
|
<when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
|
AND i.project_id IN
|
<foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
</select>
|
|
<!-- 위험 관리 -->
|
<!--<select id="findRiskIssue" resultType="java.util.HashMap"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
select
|
DISTINCT i.id, i.title, iss.name as issueStatusName,
|
(case when ir.change_assignee_count > 3 then true else false end) as changeAssigneeType,
|
(case when ir.change_issue_status_count > 3 then true else false end) as changeIssueStatusType,
|
CONCAT(p.project_key, '-', i.issue_number) AS issueKey,
|
i.issue_number as issueNumber,
|
p.project_key as projectKey
|
from issue i
|
inner join issue_risk ir on ir.issue_id = i.id
|
inner join issue_status iss on iss.id = i.issue_status_id
|
inner join project p on p.id = i.project_id
|
where iss.issue_status_type != 'CLOSE'
|
<choose>
|
<when test="projectIds.size != 0">
|
AND p.id IN
|
<foreach collection="projectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
and (ir.change_assignee_count > 3 || ir.change_issue_status_count > 3)
|
<if test="page != null and !page.equals('')">
|
limit #{pageSize} offset #{page};
|
</if>
|
</select>-->
|
<select id="findRiskIssue" resultType="java.util.HashMap"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
select
|
DISTINCT i.id, i.title, iss.name as issueStatusName,
|
(case when ir.change_department_count > 3 then true else false end) as changeDepartmentType,
|
(case when ir.change_issue_status_count > 3 then true else false end) as changeIssueStatusType,
|
CONCAT(p.project_key, '-', i.issue_number) AS issueKey,
|
i.issue_number as issueNumber,
|
p.project_key as projectKey,
|
p.name as projectName
|
from issue i
|
inner join issue_risk ir on ir.issue_id = i.id
|
inner join issue_status iss on iss.id = i.issue_status_id
|
inner join project p on p.id = i.project_id
|
where iss.issue_status_type != 'CLOSE'
|
<choose>
|
<when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
|
AND p.id IN
|
<foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
and (ir.change_department_count > 3 || ir.change_issue_status_count > 3)
|
<if test="page != null and !page.equals('')">
|
limit #{pageSize} offset #{page};
|
</if>
|
</select>
|
|
<!-- 위험 관리 개수 -->
|
<select id="countRiskIssue" resultType="java.lang.Long"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
select
|
count(DISTINCT i.id)
|
from issue i
|
inner join issue_risk ir on ir.issue_id = i.id
|
inner join issue_status iss on iss.id = i.issue_status_id
|
where iss.issue_status_type != 'CLOSE'
|
<choose>
|
<when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
|
AND i.project_id IN
|
<foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
and (ir.change_department_count > 3 || ir.change_issue_status_count > 3)
|
</select>
|
|
<!-- 5번 위젯 끝 -->
|
|
|
<!-- 6번 위젯 시작 -->
|
|
<!-- 내가 등록한 이슈 조회 -->
|
<select id="findRegisterIssue" resultType="java.util.HashMap"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
SELECT
|
DISTINCT i.id
|
<if test="page != null and !page.equals('')">
|
, replace(i.start_date, "-", ".") as startDate
|
, replace(i.complete_date, "-", ".") as completeDate
|
, i.title as title
|
, p.name as projectName
|
, iss.name as issueStatusName
|
, i.issue_number as issueNumber
|
, p.project_key as projectKey
|
, CONCAT(p.project_key, '-', i.issue_number) AS issueKey
|
</if>
|
FROM issue i
|
<if test="page != null and !page.equals('')">
|
INNER JOIN issue_status iss ON iss.id = i.issue_status_id
|
INNER JOIN project p ON p.id = i.project_id
|
</if>
|
WHERE 1=1
|
AND i.register_id = #{loginUserId}
|
<choose>
|
<when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
|
AND i.project_id IN
|
<foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
<if test="page != null and !page.equals('')">
|
AND iss.issue_status_type != 'CLOSE'
|
limit #{pageSize} offset #{page};
|
</if>
|
</select>
|
|
<!-- 내가 등록한 이슈 카운트 구하기 -->
|
<select id="countRegisterIssue" resultType="java.lang.Long"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
SELECT
|
<choose>
|
<when test="page != null and !page.equals('')">
|
COUNT(i.id)
|
</when>
|
<otherwise>
|
COUNT(DISTINCT i.id)
|
</otherwise>
|
</choose>
|
FROM issue i
|
WHERE i.register_id = #{loginUserId}
|
<if test="page != null and !page.equals('')">
|
AND EXISTS (SELECT 1 FROM issue_status iss WHERE iss.id = i.issue_status_id AND iss.issue_status_type != 'CLOSE')
|
</if>
|
<choose>
|
<when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
|
AND i.project_id IN
|
<foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
</select>
|
|
<!-- 6번 위젯 끝 -->
|
|
|
<!-- 7번 위젯 끝 -->
|
|
<!-- 8번 위젯 시작 -->
|
|
<!-- 지연중인 이슈 조회 (오늘 날짜 기준) -->
|
<select id="findDelayIssue" resultType="java.util.HashMap"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
SELECT
|
DISTINCT i.id
|
<if test="page != null and !page.equals('')">
|
, replace(i.start_date, "-", ".") as startDate
|
, replace(i.complete_date, "-", ".") as completeDate
|
, i.title as title
|
, p.name as projectName
|
, iss.name as issueStatusName
|
, i.issue_number as issueNumber
|
, p.project_key as projectKey
|
, CONCAT(p.project_key, '-', i.issue_number) AS issueKey
|
</if>
|
FROM issue i
|
<if test="page != null and !page.equals('')">
|
INNER JOIN issue_status iss ON iss.id = i.issue_status_id
|
INNER JOIN project p ON p.id = i.project_id
|
</if>
|
WHERE 1=1
|
<choose>
|
<when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
|
AND i.project_id IN
|
<foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
AND i.complete_date IS NOT NULL
|
AND i.complete_date <![CDATA[ < ]]> #{completeDate}
|
<if test="page != null and !page.equals('')">
|
AND iss.issue_status_type != 'CLOSE'
|
limit #{pageSize} offset #{page};
|
</if>
|
</select>
|
|
<!-- 지연중인 이슈 카운트 구하기 -->
|
<select id="countDelayIssue" resultType="java.lang.Long"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
SELECT
|
COUNT(DISTINCT i.id) FROM issue i
|
INNER JOIN project p ON p.id = i.project_id
|
<if test="page != null and !page.equals('')">
|
INNER JOIN issue_status iss ON iss.id = i.issue_status_id
|
</if>
|
WHERE 1=1
|
<choose>
|
<when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
|
AND i.project_id IN
|
<foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
AND i.complete_date IS NOT NULL
|
AND i.complete_date <![CDATA[ < ]]> #{completeDate}
|
<if test="page != null and !page.equals('')">
|
AND iss.issue_status_type != 'CLOSE'
|
</if>
|
</select>
|
|
<!-- 8번 위젯 끝 -->
|
|
|
<!-- 9번 위젯 시작 -->
|
|
<!-- 프로젝트 별 상태별 이슈 현황 조회 -->
|
<select id="findByStandIssueStatus" resultType="java.util.HashMap"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
select
|
<choose>
|
<when test="issueStatuses.size != 0">
|
<foreach collection="issueStatuses" item="item" index="index" separator="," open="" close="">
|
count(case when i.issue_status_id = #{item.id} then 1 end) as #{item.name}
|
</foreach>
|
</when>
|
</choose>
|
,p.id,
|
p.name as projectName
|
from issue i
|
inner join project p on p.id = i.project_id
|
inner join issue_status iss on iss.id = i.issue_status_id
|
where 1=1
|
<choose>
|
<when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
|
AND i.project_id IN
|
<foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
group by p.id
|
</select>
|
|
<!-- 9번 위젯 끝 -->
|
|
<!-- 11번 위젯 시작 -->
|
|
<!-- 멤버별 진행률 -->
|
<!--<select id="findProjectMemberIssue" resultType="java.util.HashMap"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
select
|
u.name, u.profile, u.account,
|
(select count(*) from issue i
|
inner join issue_user iu on iu.issue_id = i.id
|
inner join issue_status iss on iss.id = i.issue_status_id
|
where iu.user_id = u.id and i.project_id = p.id and iss.issue_status_type = 'CLOSE') as completeCount,
|
(select count(*) from issue i
|
inner join issue_user iu on iu.issue_id = i.id
|
inner join issue_status iss on iss.id = i.issue_status_id
|
where iu.user_id = u.id and i.project_id = p.id and iss.issue_status_type != 'CLOSE') as remainCount,
|
(select count(*) from issue i
|
inner join issue_user iu on iu.issue_id = i.id
|
inner join issue_status iss on iss.id = i.issue_status_id
|
where iu.user_id = u.id and i.project_id = p.id and iss.issue_status_type != 'CLOSE' and i.complete_date is not null and i.complete_date <![CDATA[ < ]]> now()) as delayCount
|
from
|
user u
|
inner join project_role_user pru on pru.user_id = u.id
|
inner join project_role pr on pr.id = pru.project_role_id
|
inner join project p on p.id = pr.project_id
|
where p.id = #{projectId} and p.status = '02'
|
</select>-->
|
|
<!-- 담당부서별 진행률 -->
|
<select id="findProjectMemberIssue" resultType="java.util.HashMap"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
select
|
d.department_name as departmentName,
|
p.name as projectName,
|
(select count(*) from issue i
|
inner join issue_department id on id.issue_id = i.id
|
inner join issue_status iss on iss.id = i.issue_status_id
|
where id.department_id = d.id and i.project_id = p.id and iss.issue_status_type = 'CLOSE') as completeCount,
|
(select count(*) from issue i
|
inner join issue_department id on id.issue_id = i.id
|
inner join issue_status iss on iss.id = i.issue_status_id
|
where id.department_id = d.id and i.project_id = p.id and iss.issue_status_type != 'CLOSE') as remainCount,
|
(select count(*) from issue i
|
inner join issue_department id on id.issue_id = i.id
|
inner join issue_status iss on iss.id = i.issue_status_id
|
where id.department_id = d.id and i.project_id = p.id and iss.issue_status_type != 'CLOSE' and i.complete_date is not null and i.complete_date <![CDATA[ < ]]> now()) as delayCount
|
from
|
department d
|
inner join project_role_department prd on prd.department_id = d.id
|
inner join project_role pr on pr.id = prd.project_role_id
|
inner join project p on p.id = pr.project_id
|
WHERE
|
<choose>
|
<when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
|
p.id IN
|
<foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
and p.status = '02';
|
</select>
|
|
|
<!-- 11번 위젯 끝 -->
|
|
|
<!-- 12번 위젯 시작 -->
|
|
<!-- 등록한 이슈 중 완료 갯수 -->
|
<select id="findMyRegisterCompleteIssue" resultType="java.util.HashMap"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
select i.project_id as projectId, count(i.id) as issueCount from issue i
|
where exists (select 1 from issue_status iss where iss.id = i.issue_status_id and iss.issue_status_type =
|
'CLOSE') AND
|
i.register_id = #{loginUserId}
|
<choose>
|
<when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
|
AND i.project_id IN
|
<foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
group by i.project_id
|
</select>
|
|
<!-- 등록한 이슈 중 진행 갯수 -->
|
<select id="findMyRegisterRemainIssue" resultType="java.util.HashMap"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
select i.project_id as projectId, count(i.id) as issueCount from issue i
|
where exists (select 1 from issue_status iss where iss.id = i.issue_status_id and iss.issue_status_type !=
|
'CLOSE')
|
AND i.register_id = #{loginUserId}
|
<choose>
|
<when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
|
AND i.project_id IN
|
<foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
group by i.project_id
|
</select>
|
|
<!-- 담당한 이슈 중 완료 갯수 -->
|
<!--<select id="findMyAssigneeCompleteIssue" resultType="java.util.HashMap"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
select i.project_id as projectId, count(distinct i.id) as issueCount from issue i
|
inner join issue_user iu on iu.issue_id = i.id
|
inner join issue_status iss on iss.id = i.issue_status_id
|
where iu.user_id = #{loginUserId} and iss.issue_status_type = 'CLOSE'
|
<choose>
|
<when test="projectIds.size != 0">
|
AND i.project_id IN
|
<foreach collection="projectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
group by i.project_id
|
</select>-->
|
|
<!-- 담당한 이슈 중 완료 갯수 - 담당부서 -->
|
<select id="findMyAssigneeCompleteIssue" resultType="java.util.HashMap"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
select i.project_id as projectId, count(distinct i.id) as issueCount from issue i
|
inner join issue_department id on id.issue_id = i.id
|
inner join issue_status iss on iss.id = i.issue_status_id
|
<choose>
|
<when test="myDepartmentIds.size != 0">
|
AND id.department_id IN
|
<foreach collection="myDepartmentIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
<otherwise>
|
AND 1 != 1
|
</otherwise>
|
</choose>
|
and iss.issue_status_type = 'CLOSE'
|
<choose>
|
<when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
|
AND i.project_id IN
|
<foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
group by i.project_id
|
</select>
|
|
<!-- 담당한 이슈 중 진행 갯수 -->
|
<!--<select id="findMyAssigneeRemainIssue" resultType="java.util.HashMap"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
select i.project_id as projectId, count(distinct i.id) as issueCount from issue i
|
inner join issue_user iu on iu.issue_id = i.id
|
inner join issue_status iss on iss.id = i.issue_status_id
|
where iu.user_id = #{loginUserId} and iss.issue_status_type != 'CLOSE'
|
<choose>
|
<when test="projectIds.size != 0">
|
AND i.project_id IN
|
<foreach collection="projectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
group by i.project_id
|
</select>-->
|
|
<!-- 담당한 이슈 중 진행 갯수 - 담당부서 -->
|
<select id="findMyAssigneeRemainIssue" resultType="java.util.HashMap"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
select i.project_id as projectId, count(distinct i.id) as issueCount from issue i
|
inner join issue_department id on id.issue_id = i.id
|
inner join issue_status iss on iss.id = i.issue_status_id
|
where iss.issue_status_type != 'CLOSE'
|
<choose>
|
<when test="myDepartmentIds.size != 0">
|
id.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="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
|
AND i.project_id IN
|
<foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
group by i.project_id
|
</select>
|
|
<!-- 12번 위젯 끝 -->
|
|
<!-- 이슈 타입 별 이슈 현황 -->
|
|
<select id="findByStandIssueType" resultType="java.util.HashMap"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
SELECT issue_type.name as name, COUNT(issue.id) as issueCount FROM issue issue
|
INNER JOIN issue_type issue_type ON issue.issue_type_id = issue_type.id
|
WHERE issue.project_id = #{projectId}
|
GROUP BY issue_type.name
|
</select>
|
|
<!-- 13번 위젯 시작 -->
|
|
<!-- 중요도 별 이슈 갯수 -->
|
<select id="countSeverityIssue" resultType="java.util.HashMap"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
SELECT
|
COUNT(case when s.id = 1 then 'CRITICAL' END) AS 'critical',
|
COUNT(case when s.id = 2 then 'MAJOR' END) AS 'major',
|
COUNT(case when s.id = 3 then 'MINOR' END) AS 'minor',
|
COUNT(case when s.id = 4 then 'TRIVIAL' END) AS 'trivial'
|
FROM issue i
|
INNER JOIN project p ON p.id = i.project_id
|
INNER JOIN workspace w ON w.id = p.workspace_id
|
INNER JOIN severity s ON s.id = i.severity_id
|
INNER JOIN issue_status iss ON iss.id = i.issue_status_id
|
WHERE w.id = #{workspaceId}
|
AND iss.issue_status_type != 'CLOSE'
|
<choose>
|
<when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
|
AND i.project_id IN
|
<foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
</select>
|
|
<!-- 중요도 이슈 목록 -->
|
<select id="findSeverityIssues" resultType="java.util.HashMap"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
SELECT i.title AS title,
|
s.name AS severityName,
|
p.name AS projectName,
|
s.color AS severityColor,
|
replace(i.start_date, "-", ".") AS startDate,
|
replace(i.complete_date, "-", ".") AS completeDate,
|
i.issue_number AS issueNumber,
|
p.project_key AS projectKey,
|
p.name AS projectName,
|
iss.name AS issueStatusName,
|
CONCAT(p.project_key, '-', i.issue_number) AS issueKey
|
FROM issue i
|
INNER JOIN project p ON p.id = i.project_id
|
INNER JOIN workspace w ON w.id = p.workspace_id
|
INNER JOIN severity s ON s.id = i.severity_id
|
INNER JOIN issue_status iss ON iss.id = i.issue_status_id
|
WHERE w.id = #{workspaceId}
|
AND s.id = #{severityId}
|
AND iss.issue_status_type != 'CLOSE'
|
<choose>
|
<when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
|
AND i.project_id IN
|
<foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
<if test="page != null and !page.equals('')">
|
limit #{pageSize} offset #{page};
|
</if>
|
</select>
|
|
<!-- 중요도 항목 별 갯수 -->
|
<select id="countSearchIssue" resultType="java.lang.Long"
|
parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
|
SELECT COUNT(distinct i.id)
|
FROM issue i
|
INNER JOIN project p ON p.id = i.project_id
|
INNER JOIN workspace w ON w.id = p.workspace_id
|
INNER JOIN severity s ON s.id = i.severity_id
|
INNER JOIN issue_status iss ON iss.id = i.issue_status_id
|
WHERE w.id = #{workspaceId}
|
AND s.id = #{severityId}
|
AND iss.issue_status_type != 'CLOSE'
|
<choose>
|
<when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
|
AND i.project_id IN
|
<foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
</select>
|
|
<!-- 13번 위젯 끝 -->
|
|
</mapper>
|