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
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 > #{thisDayStartTime}
|
|
AND s.begin_time < #{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>
|