You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

478 lines
17 KiB

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ccsens.tall.persist.dao.ProRoleDao">
<resultMap id="resultMap_ProRole" type="com.ccsens.tall.bean.po.ProRole">
<id column="rId" property="id" />
<result column="rName" property="name" />
<result column="rDescription" property="description" />
<result column="rSequence" property="sequence" />
</resultMap>
<resultMap id="resultMap_ProRoleInfo" type="com.ccsens.tall.bean.vo.ProjectVo$RoleInfo">
<id column="rId" property="id"/>
<result column="rName" property="name"/>
<result column="parentId" property="parentId"/>
<result column="projectRole" property="projectRole"/>
<result column="relevanceProjectId" property="relevanceProjectId"/>
<result column="relevanceProjectName" property="relevanceProjectName"/>
<collection property="members" ofType="com.ccsens.tall.bean.vo.ProjectVo$ProMemberVo">
<id column="mId" property="mId"/>
<result column="mName" property="mName"/>
<result column="mPhone" property="mPhone"/>
<result column="mUserId" property="mUserId"/>
<result column="stakeholderId" property="stakeholderId"/>
</collection>
</resultMap>
<resultMap id="roleMVP" type="com.ccsens.tall.bean.vo.TaskVo$RoleCheckList">
<id column="rId" property="id" />
<result column="rName" property="name" />
</resultMap>
<resultMap id="roleTask" type="com.ccsens.tall.bean.vo.RoleVo$RoleTask">
<id column="roleId" property="roleId"/>
<result column="roleName" property="roleName"/>
<collection property="taskList" ofType="com.ccsens.tall.bean.vo.RoleVo$RoleTaskInfo">
<id column="taskId" property="taskId"/>
<result column="detailId" property="detailId"/>
<result column="taskName" property="taskName"/>
<result column="checkerName" property="checkerName"/>
</collection>
</resultMap>
<select id="selectFirstRoleByProjectIdAndUserId" parameterType="java.util.Map"
resultMap="resultMap_ProRole">
select
id as rId,
project_id as projectId,
name as rName,
description as rDescription,
sequence as rSequence
from
t_pro_role
where
id in (
SELECT
pr.parent_id
FROM
t_pro_member m join t_pro_member_role mr on m.id = mr.member_id
join t_pro_role pr on mr.role_id = pr.id
where
(m.user_id = #{userId})
and
(pr.project_id = #{projectId})
)
AND
rec_status = 0
</select>
<select id="selectSecondRolesByProjectId" parameterType="java.util.Map"
resultMap="resultMap_ProRoleInfo">
select
pr.id as rId,
pr.name as rName,
pr.parent_id as parentId,
m.id as mId,
m.nickname as mName,
m.phone as mPhone,
m.user_id as mUserId,
m.stakeholder_id as stakeholderId,
if((SELECT `name` FROM t_pro_role WHERE id = pr.parent_id) = 'ProjectVirtualRole',1,0) as projectRole,
pr.relevance_project_id as relevanceProjectId,
(SELECT `name` FROM t_sys_project WHERE id = pr.relevance_project_id) as relevanceProjectName
from t_pro_role pr
LEFT JOIN t_pro_member_role mr ON mr.role_id = pr.id AND mr.rec_status = 0
LEFT JOIN t_pro_member m ON mr.member_id = m.id AND m.rec_status = 0
where
pr.project_id = #{projectId}
and
(SELECT name FROM t_pro_role r WHERE pr.parent_id = r.id) in ('PM','Member','ProjectVirtualRole')
AND
pr.name not IN ('全体成员','观众','MVP')
AND
pr.rec_status = 0
</select>
<select id="selectSecondRolesShowByProjectId" parameterType="java.util.Map"
resultMap="resultMap_ProRoleInfo">
select
pr.id as rId,
pr.name as rName,
pr.parent_id as parentId,
m.id as mId,
m.nickname as mName,
m.phone as mPhone,
m.user_id as mUserId,
m.stakeholder_id as stakeholderId,
if((SELECT `name` FROM t_pro_role WHERE id = pr.parent_id) = 'ProjectVirtualRole',1,0) as projectRole,
pr.relevance_project_id as relevanceProjectId,
(SELECT `name` FROM t_sys_project WHERE id = pr.relevance_project_id) as relevanceProjectName
from
t_pro_role pr LEFT JOIN t_pro_member_role_show mr ON mr.role_id = pr.id
LEFT JOIN t_pro_member m ON mr.member_id = m.id
where
pr.project_id = #{projectId}
and
(SELECT name FROM t_pro_role r WHERE pr.parent_id = r.id) in ('PM','Member','ProjectVirtualRole')
AND
pr.name not IN ('全体成员','观众','MVP')
AND
pr.rec_status = 0
AND (mr.rec_status = 0 or mr.rec_status is null)
AND (m.rec_status = 0 or m.rec_status is null)
</select>
<select id="selectSecondRolesShowByRoleId" parameterType="java.util.Map"
resultMap="resultMap_ProRoleInfo">
select
pr.id as rId,
pr.name as rName,
pr.parent_id as parentId,
m.id as mId,
m.nickname as mName,
m.phone as mPhone,
m.user_id as mUserId,
m.stakeholder_id as stakeholderId,
if((SELECT `name` FROM t_pro_role WHERE id = pr.parent_id) = 'ProjectVirtualRole',1,0) as projectRole,
pr.relevance_project_id as relevanceProjectId,
(SELECT `name` FROM t_sys_project WHERE id = pr.relevance_project_id) as relevanceProjectName
from
t_pro_role pr LEFT JOIN t_pro_member_role mr ON mr.role_id = pr.id
LEFT JOIN t_pro_member m ON mr.member_id = m.id
LEFT JOIN t_pro_member_role_show AS rs ON rs.role_id = pr.id and rs.rec_status =0
where
pr.project_id = #{projectId}
AND
rs.member_id = #{memberId}
<!-- pr.id in-->
<!-- <foreach collection="roleIdList" item="role" separator="," open="(" close=")">-->
<!-- #{role}-->
<!-- </foreach>-->
and
(SELECT name FROM t_pro_role r WHERE pr.parent_id = r.id) in ('PM','Member','ProjectVirtualRole')
AND
pr.name not IN ('全体成员','观众','MVP')
AND
pr.rec_status = 0
AND (mr.rec_status = 0 or mr.rec_status is null)
AND (m.rec_status = 0 or m.rec_status is null)
ORDER BY rs.sequence
</select>
<select id="selectCareLessRoleByProjectIdAndUserId" parameterType="java.util.Map"
resultType="Long">
select
per.role_id
from
t_pro_member m join t_pro_member_role mr on mr.member_id = m.id
join t_pro_role pr on mr.role_id = pr.id join
t_pro_role_execlude per on pr.id = per.other_role_id
where
(m.user_id = #{userId})
and
(pr.project_id = #{projectId})
AND
pr.rec_status = 0
</select>
<select id="selectRolesByProjectIdAndUserId" parameterType="java.util.Map"
resultMap="resultMap_ProRole">
select
r.id as rId,
r.name as rName,
r.description as rDescription,
r.sequence as rSequence
from
t_pro_role r JOIN t_pro_member_role mr on mr.role_id = r.id JOIN
t_pro_member m on mr.member_id = m.id
where
(m.user_id = #{userId})
and
(r.project_id = #{projectId})
AND
r.rec_status = 0
AND
mr.rec_status = 0
</select>
<select id="selectPowerByRoleName" parameterType="java.util.Map"
resultType="int">
select
power
FROM
t_pro_role_power
WHERE
description = #{roleName}
</select>
<select id="findAll" parameterType="java.util.Map" resultMap="roleMVP">
SELECT
r.id as rId,
r.name as rName
FROM
t_pro_role r
WHERE
r.project_id = #{projectId}
AND
(SELECT name FROM t_pro_role pr WHERE r.parent_id = pr.id) in ('PM','Member')
AND
r.name not IN ('全体成员','观众','MVP')
AND
r.rec_status = 0
</select>
<select id="selectByProjectAndName" resultMap="com.ccsens.tall.persist.mapper.ProRoleMapper.BaseResultMap">
select r.* from t_sys_project p, t_pro_role r
where p.id = r.project_id
<choose>
<when test="projectId != null">and p.id = #{projectId, jdbcType=BIGINT}</when>
<otherwise>and p.name = #{projectName, jdbcType=VARCHAR} </otherwise>
</choose>
<if test="roleNames != null and roleNames.size() > 0" >
and r.name in
<foreach collection="roleNames" item="role" separator="," open="(" close=")">
#{role, jdbcType=VARCHAR}
</foreach>
</if>
</select>
<select id="selectSecondRoleName" resultType="String" parameterType="java.util.Map">
select
`name`
from
t_pro_role
where
rec_status = 0
and
project_id = #{projectId}
and
parent_id != 0
and
`name` not in ('MVP','Creator','MoneyStakeholder','关注者')
order by `id`
</select>
<select id="isPmByRoleId" resultType="Integer" parameterType="java.util.Map">
SELECT
if(name = 'PM',1,0)
FROM
t_pro_role
WHERE
id in (
SELECT
parent_id as parentId
FROM
`t_pro_role`
WHERE
id = #{roleId}
)
</select>
<select id="getMemberNameByProjectId" resultType="String" parameterType="java.util.Map">
SELECT
GROUP_CONCAT(DISTINCT m.nickname ORDER BY m.id) as memberName
FROM
t_pro_member m LEFT JOIN t_pro_member_role mr on m.id = mr.member_id
LEFT JOIN t_pro_role r on mr.role_id = r.id
LEFT JOIN t_pro_role r1 on r.parent_id = r1.id
WHERE
r.rec_status = 0
AND
m.rec_status = 0
AND
m.project_id = #{projectId}
AND
r1.`name` = #{parentRoleName}
</select>
<select id="getRoleInfoByRoleId" resultMap="resultMap_ProRoleInfo">
select
pr.id as rId,
pr.name as rName,
pr.parent_id as parentId,
m.id as mId,
m.nickname as mName,
m.phone as mPhone,
m.user_id as mUserId,
m.stakeholder_id as stakeholderId,
if((SELECT `name` FROM t_pro_role WHERE id = pr.parent_id) = 'ProjectVirtualRole',1,0) as projectRole,
pr.relevance_project_id as relevanceProjectId,
(SELECT `name` FROM t_sys_project WHERE id = pr.relevance_project_id) as relevanceProjectName
from
t_pro_role pr
LEFT JOIN t_pro_member_role mr ON mr.role_id = pr.id
LEFT JOIN t_pro_member m ON mr.member_id = m.id
where
pr.id = #{roleId}
AND pr.rec_status = 0
AND (mr.rec_status = 0 or mr.rec_status is null)
AND (m.rec_status = 0 or m.rec_status is null)
</select>
<select id="queryRoleByProjectId" resultType="com.ccsens.tall.bean.vo.RoleVo$RoleByProjectId">
SELECT
r.id as roleId,
r.name as roleName
FROM
t_pro_role r
WHERE
r.project_id = #{projectId}
AND
(SELECT name FROM t_pro_role pr WHERE r.parent_id = pr.id) in ('PM','Member')
AND
r.name not IN ('观众','MVP')
AND
r.rec_status = 0
</select>
<select id="getRoleTaskByProjectId" resultMap="roleTask">
SELECT
pr.id AS roleId,
pr.NAME AS roleName,
d.id as detailId,
s.id as taskId,
d.`name` as taskName,
(SELECt `name` FROM t_pro_role WHERE id = d.checker_role) as checkerName
FROM
t_pro_role pr
LEFT JOIN t_pro_task_detail d on pr.id = d.executor_role and d.rec_status = 0
LEFT JOIN t_pro_task_sub_time s on d.id = s.task_detail_id and s.rec_status = 0
WHERE
pr.project_id = #{projectId}
AND ( SELECT NAME FROM t_pro_role r WHERE pr.parent_id = r.id ) IN ('Member')
AND pr.NAME NOT IN ('观众', 'MVP' )
AND pr.rec_status = 0
AND s.end_time &gt; #{thisDayStartTime}
AND s.begin_time &lt; #{thisDayEndTime}
</select>
<select id="queryRoleShowslistAfter" resultType="com.ccsens.tall.bean.vo.RoleVo$JueSeByProId">
select tpr.id,tpr.name,tpmrs.sequence
from t_pro_member_role_show tpmrs
left join t_pro_role tpr on tpr.rec_status=0 and tpr.id=tpmrs.role_id
where
tpmrs.rec_status=0
and tpmrs.member_id=#{memberId}
order by tpmrs.sequence
</select>
<!-- <select id="queryRoleShowslistBefore" resultType="com.ccsens.tall.bean.vo.RoleVo$JueSeByProId">-->
<!-- select-->
<!-- id,name,sequence-->
<!-- from t_pro_role tpr-->
<!-- where tpr.rec_status=0-->
<!-- and tpr.project_id=#{param1}-->
<!-- and tpr.parent_id !=0-->
<!-- and (SELECT name FROM t_pro_role pr WHERE tpr.parent_id = pr.id) in ('PM','Member')-->
<!-- and tpr.name not IN('观众', 'MVP')-->
<!-- <if test="param2!=null and param2.size>0">-->
<!-- and tpr.id not in-->
<!-- <foreach collection="param2" item="id" separator="," open="(" close=")">-->
<!-- #{id}-->
<!-- </foreach>-->
<!-- </if>-->
<!-- order by tpr.sequence-->
<!-- </select>-->
<select id="queryRoleShowslistBefore" resultType="com.ccsens.tall.bean.vo.RoleVo$JueSeByProId">
select
id,name,sequence
from t_pro_role tpr
where tpr.rec_status=0
and tpr.project_id=#{param1}
and tpr.parent_id !=0
and (SELECT name FROM t_pro_role pr WHERE tpr.parent_id = pr.id) in ('PM','Member')
and tpr.name not IN('观众', 'MVP')
<if test="param2!=null and param2.size>0">
and tpr.id not in
<foreach collection="param2" item="id" separator="," open="(" close=")">
#{id}
</foreach>
</if>
order by tpr.sequence
</select>
<select id="getPmByByProjectId" resultType="java.lang.Long">
SELECT
id
FROM
t_pro_role
WHERE
parent_id in (
SELECT id FROM t_pro_role WHERE project_id = #{projectId} and `name` = 'PM'
)
and
project_id = #{projectId}
</select>
<select id="queryRoleSHowsForRoleAndProject" resultType="com.ccsens.tall.bean.vo.RoleVo$JueSeByProId">
SELECT
tpmrs.role_type AS roleType,
tpmrs.role_id AS id,
tpmrs.sequence AS sequence
FROM
t_pro_member_role_show tpmrs
WHERE
tpmrs.rec_status = 0
AND tpmrs.member_id = #{memberId}
ORDER BY
tpmrs.sequence
</select>
<select id="selectRoleInfoByProAndMem" resultType="com.ccsens.tall.bean.vo.ProjectVo$RoleInfo">
SELECT
id,
name,
parent_id AS parentId
FROM
t_pro_role AS pr
WHERE
id = #{roleId}
AND rec_status =0
</select>
<select id="selectMemberOfRole" resultType="com.ccsens.tall.bean.vo.ProjectVo$ProMemberVo">
SELECT DISTINCT
pmr.member_id,
pm.id AS mId,
pm.nickName AS mName,
pm.phone AS mPhone,
pm.user_id AS mUserId,
pm.stakeholder_id AS stakeholderId
FROM
t_pro_member_role AS pmr
LEFT JOIN t_pro_member AS pm ON pm.id = pmr.member_id
AND pm.rec_status = 0
WHERE
pmr.role_id = #{roleId}
AND pmr.rec_status = 0
</select>
<select id="selectRoleOfNoLook" resultType="com.ccsens.tall.bean.vo.ProjectVo$RolesOfNoLook">
SELECT
r.id,r.`name`
FROM
t_pro_role AS r
RIGHT JOIN (
SELECT
ree.other_role_id AS id
FROM
t_pro_role AS rr
LEFT JOIN t_pro_role_execlude AS ree ON rr.id = ree.other_role_id
WHERE
ree.rec_status = 0
AND ree.role_id = #{roleId}
) AS nolook ON r.id = nolook.id
WHERE
r.rec_status = 0
</select>
<select id="getMoneyStakeholder" resultType="com.ccsens.tall.bean.po.ProRole">
SELECT
id,
`name`,
description
FROM
`t_pro_role`
WHERE
project_id = #{projectId}
and parent_id in
(SELECT id FROM t_pro_role WHERE name = 'MoneyStakeholder' and project_id = #{projectId})
limit 1
</select>
</mapper>