Browse Source

修改项目虚拟角色排序问题

recovery
ma 4 years ago
parent
commit
15bec54dd1
  1. 10
      tall/src/main/java/com/ccsens/tall/bean/dto/RoleDto.java
  2. 11
      tall/src/main/java/com/ccsens/tall/bean/po/ProMemberRoleShow.java
  3. 60
      tall/src/main/java/com/ccsens/tall/bean/po/ProMemberRoleShowExample.java
  4. 6
      tall/src/main/java/com/ccsens/tall/bean/vo/RoleVo.java
  5. 24
      tall/src/main/java/com/ccsens/tall/persist/dao/ProRoleDao.java
  6. 7
      tall/src/main/java/com/ccsens/tall/persist/dao/SysProjectDao.java
  7. 115
      tall/src/main/java/com/ccsens/tall/service/ProRoleService.java
  8. 4
      tall/src/main/resources/application.yml
  9. 42
      tall/src/main/resources/mapper_dao/ProRoleDao.xml
  10. 11
      tall/src/main/resources/mapper_dao/SysProjectDao.xml
  11. 25
      tall/src/main/resources/mapper_raw/ProMemberRoleShowMapper.xml

10
tall/src/main/java/com/ccsens/tall/bean/dto/RoleDto.java

@ -95,6 +95,14 @@ public class RoleDto {
@ApiModelProperty("项目id")
private Long projectId;
@ApiModelProperty("按照展示的排序进行排序号")
private List<Long> roleIds;
private List<RoleAndType> roleIds;
}
@Data
@ApiModel("角色id与角色类型")
public static class RoleAndType {
@ApiModelProperty("角色类型")
private Byte roleType;
@ApiModelProperty("按照展示的排序进行排序号")
private Long roleId;
}
}

11
tall/src/main/java/com/ccsens/tall/bean/po/ProMemberRoleShow.java

@ -18,6 +18,8 @@ public class ProMemberRoleShow implements Serializable {
private Byte recStatus;
private Byte roleType;
private static final long serialVersionUID = 1L;
public Long getId() {
@ -76,6 +78,14 @@ public class ProMemberRoleShow implements Serializable {
this.recStatus = recStatus;
}
public Byte getRoleType() {
return roleType;
}
public void setRoleType(Byte roleType) {
this.roleType = roleType;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
@ -89,6 +99,7 @@ public class ProMemberRoleShow implements Serializable {
sb.append(", createdAt=").append(createdAt);
sb.append(", updatedAt=").append(updatedAt);
sb.append(", recStatus=").append(recStatus);
sb.append(", roleType=").append(roleType);
sb.append("]");
return sb.toString();
}

60
tall/src/main/java/com/ccsens/tall/bean/po/ProMemberRoleShowExample.java

@ -524,6 +524,66 @@ public class ProMemberRoleShowExample {
addCriterion("rec_status not between", value1, value2, "recStatus");
return (Criteria) this;
}
public Criteria andRoleTypeIsNull() {
addCriterion("role_type is null");
return (Criteria) this;
}
public Criteria andRoleTypeIsNotNull() {
addCriterion("role_type is not null");
return (Criteria) this;
}
public Criteria andRoleTypeEqualTo(Byte value) {
addCriterion("role_type =", value, "roleType");
return (Criteria) this;
}
public Criteria andRoleTypeNotEqualTo(Byte value) {
addCriterion("role_type <>", value, "roleType");
return (Criteria) this;
}
public Criteria andRoleTypeGreaterThan(Byte value) {
addCriterion("role_type >", value, "roleType");
return (Criteria) this;
}
public Criteria andRoleTypeGreaterThanOrEqualTo(Byte value) {
addCriterion("role_type >=", value, "roleType");
return (Criteria) this;
}
public Criteria andRoleTypeLessThan(Byte value) {
addCriterion("role_type <", value, "roleType");
return (Criteria) this;
}
public Criteria andRoleTypeLessThanOrEqualTo(Byte value) {
addCriterion("role_type <=", value, "roleType");
return (Criteria) this;
}
public Criteria andRoleTypeIn(List<Byte> values) {
addCriterion("role_type in", values, "roleType");
return (Criteria) this;
}
public Criteria andRoleTypeNotIn(List<Byte> values) {
addCriterion("role_type not in", values, "roleType");
return (Criteria) this;
}
public Criteria andRoleTypeBetween(Byte value1, Byte value2) {
addCriterion("role_type between", value1, value2, "roleType");
return (Criteria) this;
}
public Criteria andRoleTypeNotBetween(Byte value1, Byte value2) {
addCriterion("role_type not between", value1, value2, "roleType");
return (Criteria) this;
}
}
public static class Criteria extends GeneratedCriteria {

6
tall/src/main/java/com/ccsens/tall/bean/vo/RoleVo.java

@ -47,11 +47,13 @@ public class RoleVo {
@ApiModelProperty("是否是项目虚拟的角色 0否 1是")
private Integer projectRole=0;
@ApiModelProperty("关联项目的id")
private Integer relevanceProjectId;
private Long relevanceProjectId;
@ApiModelProperty("关联项目的名称")
private Integer relevanceProjectName;
private String relevanceProjectName;
@ApiModelProperty("是否是当前角色的奖惩干系人")
private Boolean stakeholder = false;
@ApiModelProperty("角色类型(0-普通角色,1-项目虚拟角色)")
private Byte roleType;
}
@Data
@ApiModel("添加时返回成员信息")

24
tall/src/main/java/com/ccsens/tall/persist/dao/ProRoleDao.java

@ -73,7 +73,7 @@ public interface ProRoleDao extends ProRoleMapper{
/**
* 查询已经存在的角色
* @param memberId
* @param memberId 成员id
* @return
*/
List<RoleVo.JueSeByProId> queryRoleShowslistAfter(Long memberId);
@ -100,6 +100,28 @@ public interface ProRoleDao extends ProRoleMapper{
*/
List<Long> getPmByByProjectId(@Param("projectId")Long projectId);
/**
* 根据成员id查询需要展示的角色和(项目虚拟角色)
* @param memberId
* @return
*/
List<RoleVo.JueSeByProId> queryRoleSHowsForRoleAndProject(Long memberId);
/**
* 查询show表中的角色信息
* @param roleId 角色id
* @return 角色信息
*/
ProjectVo.RoleInfo selectRoleInfoByProAndMem(Long roleId);
/**
* 查找角色下的所有成员
* @param roleId 角色id
* @return 成员信息
*/
List<ProjectVo.ProMemberVo> selectMemberOfRole(Long roleId);
// /**
// * 查找项目下的所有成员的名字用“,”分隔
// * @param projectId 项目id

7
tall/src/main/java/com/ccsens/tall/persist/dao/SysProjectDao.java

@ -72,4 +72,11 @@ public interface SysProjectDao extends SysProjectMapper{
* @return
*/
List<Long> queryProjectIdByUserId(@Param("startTime")Long startTime,@Param("endTime") Long endTime, @Param("userId")Long userId);
/**
* 查找虚拟项目角色的信息
* @param roleId
* @return
*/
ProjectVo.RoleInfo selectProjectInfoByProAndMem(Long roleId);
}

115
tall/src/main/java/com/ccsens/tall/service/ProRoleService.java

@ -230,7 +230,7 @@ public class ProRoleService implements IProRoleService {
}
}
}
// //查找该项目的子项目,转换成项目角色返回
//查找该项目的子项目,转换成项目角色返回
// SysProjectExample projectExample = new SysProjectExample();
// projectExample.createCriteria().andParentIdEqualTo(projectId).andParentIdNotEqualTo(0L);
// List<SysProject> sysProject = sysProjectDao.selectByExample(projectExample);
@ -270,7 +270,7 @@ public class ProRoleService implements IProRoleService {
@Override
public List<ProjectVo.RoleInfo> getRealMemberRolesShowByProjectId(Long projectId,Long userId) {
//返回的对象
List<ProjectVo.RoleInfo> memberRoleList;
List<ProjectVo.RoleInfo> memberRoleList = new ArrayList<>();
//先从userid和项目id获取当前用户的成员id,查看role-show里面是否有这个成员的数据
ProMemberExample proMemberExample=new ProMemberExample();
@ -376,31 +376,50 @@ public class ProRoleService implements IProRoleService {
proMemberRoleShowExampleNew.setOrderByClause("sequence");
List<ProMemberRoleShow> proMemberRoleShowsNew = proMemberRoleShowMapper.selectByExample(proMemberRoleShowExampleNew);
List<Long> roleIds = new ArrayList<>();
for (ProMemberRoleShow roleShow : proMemberRoleShowsNew) {
roleIds.add(roleShow.getRoleId());
}
//查询二级角色
memberRoleList = proRoleDao.selectSecondRolesShowByRoleId(projectId,memberId);
//在show表查找可见的角色
// TODO 查找此项目的子项目
SysProjectExample projectExample = new SysProjectExample();
projectExample.createCriteria().andParentIdEqualTo(projectId);
List<SysProject> sysProjectList = sysProjectDao.selectByExample(projectExample);
if(CollectionUtil.isNotEmpty(sysProjectList)){
sysProjectList.forEach(project -> {
ProjectVo.RoleInfo roleInfo = new ProjectVo.RoleInfo();
roleInfo.setId(project.getId());
roleInfo.setName(project.getName());
roleInfo.setProjectRole((byte) 1);
roleInfo.setRelevanceProjectId(project.getId());
roleInfo.setRelevanceProjectName(project.getName());
for (int i = 0; i < proMemberRoleShowsNew.size(); i++) {
//普通角色,需要查询成员
if (0 == proMemberRoleShowsNew.get(i).getRoleType()){
ProjectVo.RoleInfo roleInfo = proRoleDao.selectRoleInfoByProAndMem(proMemberRoleShowsNew.get(i).getRoleId());
List<ProjectVo.ProMemberVo> members = proRoleDao.selectMemberOfRole(proMemberRoleShowsNew.get(i).getRoleId());
memberRoleList.add(roleInfo);
});
memberRoleList.get(i).setMembers(members);
}
//虚拟项目角色
if(1 == proMemberRoleShowsNew.get(i).getRoleType()){
ProjectVo.RoleInfo roleInfo = projectDao.selectProjectInfoByProAndMem(proMemberRoleShowsNew.get(i).getRoleId());
if (ObjectUtil.isNotNull(roleInfo)){
roleInfo.setProjectRole((byte) 1);
roleInfo.setRelevanceProjectId(roleInfo.getId());
roleInfo.setRelevanceProjectName(roleInfo.getName());
}
memberRoleList.add(roleInfo);
}
}
// List<Long> roleIds = new ArrayList<>();
// for (ProMemberRoleShow roleShow : proMemberRoleShowsNew) {
// roleIds.add(roleShow.getRoleId());
// }
// //查询二级角色
// memberRoleList = proRoleDao.selectSecondRolesShowByRoleId(projectId,memberId);
// //在show表查找可见的角色
//
// // TODO 查找此项目的子项目
// SysProjectExample projectExample = new SysProjectExample();
// projectExample.createCriteria().andParentIdEqualTo(projectId);
// List<SysProject> sysProjectList = sysProjectDao.selectByExample(projectExample);
// if(CollectionUtil.isNotEmpty(sysProjectList)){
// sysProjectList.forEach(project -> {
// ProjectVo.RoleInfo roleInfo = new ProjectVo.RoleInfo();
// roleInfo.setId(project.getId());
// roleInfo.setName(project.getName());
// roleInfo.setProjectRole((byte) 1);
// roleInfo.setRelevanceProjectId(project.getId());
// roleInfo.setRelevanceProjectName(project.getName());
// memberRoleList.add(roleInfo);
// });
// }
return memberRoleList;
}
@ -798,22 +817,38 @@ public class ProRoleService implements IProRoleService {
List<ProRole> roleList = proMemberService.selectRolesByUserIdAndProjectId(param.getUserId(), param.getParam().getProjectId(), 0);
//查询已经添加的角色
List<RoleVo.JueSeByProId> listBefor=proRoleDao.queryRoleShowslistAfter(memberId);
// List<RoleVo.JueSeByProId> listBefor=proRoleDao.queryRoleShowslistAfter(memberId);
//查询已添加的角色和项目虚拟角色
List<RoleVo.JueSeByProId> listBefor = proRoleDao.queryRoleSHowsForRoleAndProject(memberId);
List<Long> listBeforeId= listBefor.stream().map(action ->{return action.getId();}).collect(Collectors.toList());
for (int i = 0; i < listBefor.size(); i++) {
//是否项目经理
if(jili1.contains(listBefor.get(i).getId())){
listBefor.get(i).setIsPM(true);
}else {
listBefor.get(i).setIsPM(false);
}
//当前用户是否属于该角色
for (ProRole proRole : roleList) {
if (listBefor.get(i).getId().equals(proRole.getId())){
listBefor.get(i).setMine(true);
}else{
listBefor.get(i).setMine(false);
//普通角色
if (0 == listBefor.get(i).getRoleType()){
//是否项目经理
if(jili1.contains(listBefor.get(i).getId())){
listBefor.get(i).setIsPM(true);
}else {
listBefor.get(i).setIsPM(false);
}
//当前用户是否属于该角色
for (ProRole proRole : roleList) {
if (listBefor.get(i).getId().equals(proRole.getId())){
listBefor.get(i).setMine(true);
}else{
listBefor.get(i).setMine(false);
}
}
//查询角色名字等具体信息
ProRole proRole = proRoleDao.selectByPrimaryKey(listBefor.get(i).getId());
listBefor.get(i).setName(proRole.getName());
}
//项目虚拟角色
if (1 == listBefor.get(i).getRoleType()){
SysProject sysProject = projectDao.selectByPrimaryKey(listBefor.get(i).getId());
listBefor.get(i).setName(sysProject.getName());
listBefor.get(i).setProjectRole(1);
listBefor.get(i).setRelevanceProjectId(sysProject.getId());
listBefor.get(i).setRelevanceProjectName(sysProject.getName());
}
}
//查询未添加的角色
@ -934,11 +969,13 @@ public class ProRoleService implements IProRoleService {
}
//根据前端传的数据,循环放入,并排序
for (int i = 0; i < param.getParam().getRoleIds().size(); i++) {
Long roleId = param.getParam().getRoleIds().get(i);
// Long roleId = param.getParam().getRoleIds().get(i);
RoleDto.RoleAndType roleAndType = param.getParam().getRoleIds().get(i);
ProMemberRoleShow proMemberRoleShow = new ProMemberRoleShow();
proMemberRoleShow.setId(snowflake.nextId());
proMemberRoleShow.setMemberId(memberId);
proMemberRoleShow.setRoleId(roleId);
proMemberRoleShow.setRoleId(roleAndType.getRoleId());
proMemberRoleShow.setRoleType(roleAndType.getRoleType());
proMemberRoleShow.setSequence(i);
proMemberRoleShowMapper.insertSelective(proMemberRoleShow);
}

4
tall/src/main/resources/application.yml

@ -1,5 +1,5 @@
spring:
profiles:
active: dev
include: util-dev,common
active: test
include: util-test,common

42
tall/src/main/resources/mapper_dao/ProRoleDao.xml

@ -384,4 +384,46 @@
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>
</mapper>

11
tall/src/main/resources/mapper_dao/SysProjectDao.xml

@ -623,4 +623,15 @@
and p.begin_time &lt; #{endTime}
GROUP BY p.id
</select>
<select id="selectProjectInfoByProAndMem" resultType="com.ccsens.tall.bean.vo.ProjectVo$RoleInfo">
SELECT
id AS id,
NAME AS NAME
FROM
t_sys_project AS sp
WHERE
id = #{roleId}
AND rec_status =0
</select>
</mapper>

25
tall/src/main/resources/mapper_raw/ProMemberRoleShowMapper.xml

@ -9,6 +9,7 @@
<result column="created_at" jdbcType="TIMESTAMP" property="createdAt" />
<result column="updated_at" jdbcType="TIMESTAMP" property="updatedAt" />
<result column="rec_status" jdbcType="TINYINT" property="recStatus" />
<result column="role_type" jdbcType="TINYINT" property="roleType" />
</resultMap>
<sql id="Example_Where_Clause">
<where>
@ -69,7 +70,7 @@
</where>
</sql>
<sql id="Base_Column_List">
id, member_id, role_id, sequence, created_at, updated_at, rec_status
id, member_id, role_id, sequence, created_at, updated_at, rec_status, role_type
</sql>
<select id="selectByExample" parameterType="com.ccsens.tall.bean.po.ProMemberRoleShowExample" resultMap="BaseResultMap">
select
@ -104,10 +105,10 @@
<insert id="insert" parameterType="com.ccsens.tall.bean.po.ProMemberRoleShow">
insert into t_pro_member_role_show (id, member_id, role_id,
sequence, created_at, updated_at,
rec_status)
rec_status, role_type)
values (#{id,jdbcType=BIGINT}, #{memberId,jdbcType=BIGINT}, #{roleId,jdbcType=BIGINT},
#{sequence,jdbcType=INTEGER}, #{createdAt,jdbcType=TIMESTAMP}, #{updatedAt,jdbcType=TIMESTAMP},
#{recStatus,jdbcType=TINYINT})
#{recStatus,jdbcType=TINYINT}, #{roleType,jdbcType=TINYINT})
</insert>
<insert id="insertSelective" parameterType="com.ccsens.tall.bean.po.ProMemberRoleShow">
insert into t_pro_member_role_show
@ -133,6 +134,9 @@
<if test="recStatus != null">
rec_status,
</if>
<if test="roleType != null">
role_type,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
@ -156,6 +160,9 @@
<if test="recStatus != null">
#{recStatus,jdbcType=TINYINT},
</if>
<if test="roleType != null">
#{roleType,jdbcType=TINYINT},
</if>
</trim>
</insert>
<select id="countByExample" parameterType="com.ccsens.tall.bean.po.ProMemberRoleShowExample" resultType="java.lang.Long">
@ -188,6 +195,9 @@
<if test="record.recStatus != null">
rec_status = #{record.recStatus,jdbcType=TINYINT},
</if>
<if test="record.roleType != null">
role_type = #{record.roleType,jdbcType=TINYINT},
</if>
</set>
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
@ -201,7 +211,8 @@
sequence = #{record.sequence,jdbcType=INTEGER},
created_at = #{record.createdAt,jdbcType=TIMESTAMP},
updated_at = #{record.updatedAt,jdbcType=TIMESTAMP},
rec_status = #{record.recStatus,jdbcType=TINYINT}
rec_status = #{record.recStatus,jdbcType=TINYINT},
role_type = #{record.roleType,jdbcType=TINYINT}
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
@ -227,6 +238,9 @@
<if test="recStatus != null">
rec_status = #{recStatus,jdbcType=TINYINT},
</if>
<if test="roleType != null">
role_type = #{roleType,jdbcType=TINYINT},
</if>
</set>
where id = #{id,jdbcType=BIGINT}
</update>
@ -237,7 +251,8 @@
sequence = #{sequence,jdbcType=INTEGER},
created_at = #{createdAt,jdbcType=TIMESTAMP},
updated_at = #{updatedAt,jdbcType=TIMESTAMP},
rec_status = #{recStatus,jdbcType=TINYINT}
rec_status = #{recStatus,jdbcType=TINYINT},
role_type = #{roleType,jdbcType=TINYINT}
where id = #{id,jdbcType=BIGINT}
</update>
</mapper>
Loading…
Cancel
Save