|
|
@ -12,16 +12,14 @@ import com.ccsens.tall.bean.vo.ProjectVo; |
|
|
|
import com.ccsens.tall.bean.vo.RoleVo; |
|
|
|
import com.ccsens.tall.bean.vo.TaskVo; |
|
|
|
import com.ccsens.tall.persist.dao.*; |
|
|
|
import com.ccsens.tall.persist.mapper.ProMemberMapper; |
|
|
|
import com.ccsens.tall.persist.mapper.ProMemberRoleMapper; |
|
|
|
import com.ccsens.tall.persist.mapper.ProMemberRoleShowMapper; |
|
|
|
import com.ccsens.tall.persist.mapper.ProUserAttentionRoleMapper; |
|
|
|
import com.ccsens.tall.persist.mapper.*; |
|
|
|
import com.ccsens.util.CodeEnum; |
|
|
|
import com.ccsens.util.WebConstant; |
|
|
|
import com.ccsens.util.bean.dto.QueryDto; |
|
|
|
import com.ccsens.util.exception.BaseException; |
|
|
|
import io.swagger.models.auth.In; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.aspectj.apache.bcel.classfile.Code; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Propagation; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
@ -29,6 +27,7 @@ import org.w3c.dom.ls.LSInput; |
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.Collections; |
|
|
|
import java.util.List; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
@ -71,6 +70,10 @@ public class ProRoleService implements IProRoleService { |
|
|
|
private ProMemberMapper proMemberMapper; |
|
|
|
@Resource |
|
|
|
private ProMemberRoleMapper proMemberRoleMapper; |
|
|
|
@Resource |
|
|
|
private ProRoleMapper proRoleMapper; |
|
|
|
@Resource |
|
|
|
private ProRoleExcludeMapper proRoleExcludeMapper; |
|
|
|
@Override |
|
|
|
public void saveProRole(ProRole proRole) { |
|
|
|
proRoleDao.insertSelective(proRole); |
|
|
@ -265,6 +268,7 @@ public class ProRoleService implements IProRoleService { |
|
|
|
proMemberRoleShowExample.createCriteria().andMemberIdEqualTo(memberId).andRecStatusEqualTo((byte)0); |
|
|
|
List<ProMemberRoleShow> proMemberRoleShows = proMemberRoleShowMapper.selectByExample(proMemberRoleShowExample); |
|
|
|
if(CollectionUtil.isEmpty(proMemberRoleShows)){ |
|
|
|
Integer[] seq=new Integer[]{0}; |
|
|
|
//需要从原表中导入数据
|
|
|
|
ProMemberRoleExample proMemberRoleExample=new ProMemberRoleExample(); |
|
|
|
proMemberRoleExample.createCriteria().andMemberIdEqualTo(memberId).andRecStatusEqualTo((byte)0); |
|
|
@ -272,7 +276,7 @@ public class ProRoleService implements IProRoleService { |
|
|
|
if(CollectionUtil.isNotEmpty(proMemberRoles)){ |
|
|
|
ProMemberRoleShow proMemberRoleShow=new ProMemberRoleShow(); |
|
|
|
Long finalMemberId = memberId; |
|
|
|
Integer[] seq=new Integer[]{0}; |
|
|
|
|
|
|
|
proMemberRoles.forEach(action->{ |
|
|
|
proMemberRoleShow.setId(action.getId()); |
|
|
|
proMemberRoleShow.setMemberId(finalMemberId); |
|
|
@ -281,6 +285,68 @@ public class ProRoleService implements IProRoleService { |
|
|
|
proMemberRoleShowMapper.insertSelective(proMemberRoleShow); |
|
|
|
}); |
|
|
|
} |
|
|
|
//这里插入项目经理
|
|
|
|
|
|
|
|
|
|
|
|
//查一下项目经理的角色id,
|
|
|
|
ProRoleExample proRoleExample=new ProRoleExample(); |
|
|
|
proRoleExample.createCriteria().andRecStatusEqualTo((byte)0).andNameEqualTo(WebConstant.ROLE_NAME.PM.value).andParentIdEqualTo(0L).andProjectIdEqualTo(projectId); |
|
|
|
//一级角色项目经理
|
|
|
|
List<Long> jili=proRoleMapper.selectByExample(proRoleExample).stream().map(action->action.getId()).collect(Collectors.toList()); |
|
|
|
//二级角色项目经理
|
|
|
|
ProRoleExample proRoleExample1=new ProRoleExample(); |
|
|
|
proRoleExample1.createCriteria().andRecStatusEqualTo((byte)0).andParentIdIn(jili); |
|
|
|
List<ProRole> proRoles = proRoleMapper.selectByExample(proRoleExample1); |
|
|
|
List<Long> jili1=proRoles.stream().map(action->action.getId()).collect(Collectors.toList()); |
|
|
|
//是否是pm true是经理 false不是经理
|
|
|
|
boolean[] isPm = new boolean[]{false}; |
|
|
|
//经理是否对他不可见 true不可见 false可见
|
|
|
|
boolean[] isshow=new boolean[]{false}; |
|
|
|
|
|
|
|
//查询已经添加的角色
|
|
|
|
List<RoleVo.JueSeByProId> listBefor=proRoleDao.queryRoleShowslistAfter(memberId); |
|
|
|
List<Long> listBeforeId= listBefor.stream().map(action ->{return action.getId();}).collect(Collectors.toList()); |
|
|
|
|
|
|
|
//判断该成员是不是项目经理
|
|
|
|
ProMemberRoleExample proMemberRoleExample1=new ProMemberRoleExample(); |
|
|
|
proMemberRoleExample.createCriteria().andRecStatusEqualTo((byte)0).andMemberIdEqualTo(memberId).andRoleIdEqualTo(jili1.get(0)); |
|
|
|
List<ProMemberRole> proMemberRoles1 = proMemberRoleMapper.selectByExample(proMemberRoleExample1); |
|
|
|
if(CollectionUtil.isEmpty(proMemberRoles1)){ |
|
|
|
isPm[0]=false; |
|
|
|
}else { |
|
|
|
isPm[0]=true; |
|
|
|
} |
|
|
|
|
|
|
|
if(!isPm[0]){ |
|
|
|
//先按照一个经理的算
|
|
|
|
ProRoleExcludeExample proRoleExcludeExample=new ProRoleExcludeExample(); |
|
|
|
proRoleExcludeExample.createCriteria().andRecStatusEqualTo((byte)0).andRoleIdEqualTo(jili1.get(0)); |
|
|
|
List<ProRoleExclude> proRoleExcludes = proRoleExcludeMapper.selectByExample(proRoleExcludeExample); |
|
|
|
proRoleExcludes.forEach(action->{ |
|
|
|
//查看查询出的不可见角色id是否在角色id里面
|
|
|
|
if(listBeforeId.contains(action.getOtherRoleId())) |
|
|
|
{ |
|
|
|
isshow[0]=true; |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
if(!isPm[0]&&!isshow[0]){ |
|
|
|
//添加经理
|
|
|
|
if(!listBeforeId.contains(jili1.get(0))) { |
|
|
|
RoleVo.JueSeByProId jueSeByProId = new RoleVo.JueSeByProId(); |
|
|
|
jueSeByProId.setId(proRoles.get(0).getId()); |
|
|
|
jueSeByProId.setName(proRoles.get(0).getName()); |
|
|
|
jueSeByProId.setSequence(proRoles.get(0).getSequence()); |
|
|
|
listBefor.add(jueSeByProId); |
|
|
|
//顺道插入到show表里面
|
|
|
|
ProMemberRoleShow proMemberRoleShow=new ProMemberRoleShow(); |
|
|
|
proMemberRoleShow.setId(snowflake.nextId()); |
|
|
|
proMemberRoleShow.setRoleId(proRoles.get(0).getId()); |
|
|
|
proMemberRoleShow.setMemberId(memberId); |
|
|
|
proMemberRoleShow.setSequence(0); |
|
|
|
proMemberRoleShowMapper.insertSelective(proMemberRoleShow); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
//查询二级角色
|
|
|
|
List<ProjectVo.RoleInfo> memberRoleList; |
|
|
@ -646,9 +712,177 @@ public class ProRoleService implements IProRoleService { |
|
|
|
|
|
|
|
@Override |
|
|
|
public RoleVo.JueSeByProIdLists queryRoleShows(QueryDto<RoleDto.QueryRoleShows> param) { |
|
|
|
RoleVo.JueSeByProIdLists jueSeByProIdLists=new RoleVo.JueSeByProIdLists(); |
|
|
|
//获取成员id
|
|
|
|
Long memberId = queryMemberId(param.getParam().getProjectId(), param.getUserId()); |
|
|
|
//获取经理角色id
|
|
|
|
ProRoleExample proRoleExample=new ProRoleExample(); |
|
|
|
proRoleExample.createCriteria().andRecStatusEqualTo((byte)0).andNameEqualTo(WebConstant.ROLE_NAME.PM.value).andParentIdEqualTo(0L).andProjectIdEqualTo(param.getParam().getProjectId()); |
|
|
|
//一级角色项目经理
|
|
|
|
List<Long> jili=proRoleMapper.selectByExample(proRoleExample).stream().map(action->action.getId()).collect(Collectors.toList()); |
|
|
|
//二级角色项目经理
|
|
|
|
ProRoleExample proRoleExample1=new ProRoleExample(); |
|
|
|
proRoleExample1.createCriteria().andRecStatusEqualTo((byte)0).andParentIdIn(jili); |
|
|
|
List<ProRole> proRoles = proRoleMapper.selectByExample(proRoleExample1); |
|
|
|
List<Long> jili1=proRoles.stream().map(action->action.getId()).collect(Collectors.toList()); |
|
|
|
|
|
|
|
//查询已经添加的角色
|
|
|
|
List<RoleVo.JueSeByProId> listBefor=proRoleDao.queryRoleShowslistAfter(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); |
|
|
|
} |
|
|
|
} |
|
|
|
//查询未添加的角色
|
|
|
|
List<RoleVo.JueSeByProId> listAfter=proRoleDao.queryRoleShowslistBefore(param.getParam().getProjectId(),listBeforeId); |
|
|
|
jueSeByProIdLists.setListAfter(listAfter); |
|
|
|
jueSeByProIdLists.setListBefore(listBefor); |
|
|
|
return jueSeByProIdLists; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 修改角色是否展示 |
|
|
|
* @param param |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public void queryRoleIsShows(QueryDto<RoleDto.QueryRoleIsShows> param) { |
|
|
|
//获取成员id
|
|
|
|
Long memberId=queryMemberId(param.getParam().getProjectId(),param.getUserId()); |
|
|
|
//获取经理得id
|
|
|
|
ProRoleExample proRoleExample=new ProRoleExample(); |
|
|
|
proRoleExample.createCriteria().andRecStatusEqualTo((byte)0).andNameEqualTo(WebConstant.ROLE_NAME.PM.value).andParentIdEqualTo(0L).andProjectIdEqualTo(param.getParam().getProjectId()); |
|
|
|
//一级角色项目经理
|
|
|
|
List<Long> jili=proRoleMapper.selectByExample(proRoleExample).stream().map(action->action.getId()).collect(Collectors.toList()); |
|
|
|
//二级角色项目经理
|
|
|
|
ProRoleExample proRoleExample1=new ProRoleExample(); |
|
|
|
proRoleExample1.createCriteria().andRecStatusEqualTo((byte)0).andParentIdIn(jili); |
|
|
|
List<ProRole> proRoles = proRoleMapper.selectByExample(proRoleExample1); |
|
|
|
List<Long> jili1=proRoles.stream().map(action->action.getId()).collect(Collectors.toList()); |
|
|
|
|
|
|
|
if(param.getParam().getIsShow()){ |
|
|
|
//展示的 增加的 不需要考虑是否为经理
|
|
|
|
ProMemberRoleShowExample proMemberRoleShowExample=new ProMemberRoleShowExample(); |
|
|
|
proMemberRoleShowExample.createCriteria().andRecStatusEqualTo((byte) 0).andMemberIdEqualTo(memberId); |
|
|
|
List<ProMemberRoleShow> proMemberRoleShows = proMemberRoleShowMapper.selectByExample(proMemberRoleShowExample); |
|
|
|
if((proMemberRoleShows.size()+param.getParam().getRoleIds().size())>10){ |
|
|
|
throw new BaseException(CodeEnum.CHAOGUOSHI); |
|
|
|
}else { |
|
|
|
|
|
|
|
if(param.getParam().getRoleIds().size()>0){ |
|
|
|
//查一下目前最大得排序是多少
|
|
|
|
Integer[] seq=new Integer[]{proMemberRoleShows.stream().mapToInt(action->action.getSequence()).max().getAsInt()}; |
|
|
|
ProMemberRoleShowExample proMemberRoleShowExample1=new ProMemberRoleShowExample(); |
|
|
|
proMemberRoleShowExample1.createCriteria().andMemberIdEqualTo(memberId).andRoleIdIn(param.getParam().getRoleIds()).andRecStatusEqualTo((byte)0); |
|
|
|
List<ProMemberRoleShow> proMemberRoleShows1 = proMemberRoleShowMapper.selectByExample(proMemberRoleShowExample1); |
|
|
|
if(proMemberRoleShows1.size()>0){ |
|
|
|
throw new BaseException(CodeEnum.CHONGFUTIJIAO); |
|
|
|
} |
|
|
|
param.getParam().getRoleIds().forEach(ac->{ |
|
|
|
|
|
|
|
ProMemberRoleShow proMemberRoleShow=new ProMemberRoleShow(); |
|
|
|
proMemberRoleShow.setId(snowflake.nextId()); |
|
|
|
proMemberRoleShow.setRoleId(ac); |
|
|
|
proMemberRoleShow.setMemberId(memberId); |
|
|
|
if(jili1.contains(ac)){ |
|
|
|
proMemberRoleShow.setSequence(0); |
|
|
|
}else { |
|
|
|
proMemberRoleShow.setSequence(++seq[0]); |
|
|
|
} |
|
|
|
proMemberRoleShowMapper.insertSelective(proMemberRoleShow); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
}else { |
|
|
|
//不展示的,删除的
|
|
|
|
if(param.getParam().getRoleIds().size()>0){ |
|
|
|
//先判断是不是经理了
|
|
|
|
if(param.getParam().getRoleIds().contains(jili1.get(0))){ |
|
|
|
throw new BaseException(CodeEnum.BAOHANJINLI); |
|
|
|
} |
|
|
|
for (int i = 0; i <param.getParam().getRoleIds().size() ; i++) { |
|
|
|
ProMemberRoleShowExample proMemberRoleShowExample=new ProMemberRoleShowExample(); |
|
|
|
proMemberRoleShowExample.createCriteria().andMemberIdEqualTo(memberId).andRoleIdEqualTo(param.getParam().getRoleIds().get(i)).andRecStatusEqualTo((byte)0); |
|
|
|
ProMemberRoleShow proMemberRoleShow=new ProMemberRoleShow(); |
|
|
|
proMemberRoleShow.setRecStatus((byte)2); |
|
|
|
proMemberRoleShowMapper.updateByExampleSelective(proMemberRoleShow,proMemberRoleShowExample); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 修改传入的角色的排序 |
|
|
|
* @param param |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public void upRoleShowsOrder(QueryDto<RoleDto.UpRoleShowsOrder> param) { |
|
|
|
if(param.getParam().getRoleIds().size()<=1){ |
|
|
|
throw new BaseException(CodeEnum.ZUISHAOCHUANLIANGE); |
|
|
|
} |
|
|
|
Long memberId=queryMemberId(param.getParam().getProjectId(),param.getUserId()); |
|
|
|
ProRoleExample proRoleExample=new ProRoleExample(); |
|
|
|
proRoleExample.createCriteria().andRecStatusEqualTo((byte)0).andNameEqualTo(WebConstant.ROLE_NAME.PM.value).andParentIdEqualTo(0L).andProjectIdEqualTo(param.getParam().getProjectId()); |
|
|
|
//一级角色项目经理
|
|
|
|
List<Long> jili=proRoleMapper.selectByExample(proRoleExample).stream().map(action->action.getId()).collect(Collectors.toList()); |
|
|
|
//二级角色项目经理
|
|
|
|
ProRoleExample proRoleExample1=new ProRoleExample(); |
|
|
|
proRoleExample1.createCriteria().andRecStatusEqualTo((byte)0).andParentIdIn(jili); |
|
|
|
List<ProRole> proRoles = proRoleMapper.selectByExample(proRoleExample1); |
|
|
|
List<Long> jili1=proRoles.stream().map(action->action.getId()).collect(Collectors.toList()); |
|
|
|
for (int i = param.getParam().getRoleIds().size() - 1; i >= 0; i--) { |
|
|
|
if(jili1.get(0).equals(param.getParam().getRoleIds().get(i))){ |
|
|
|
param.getParam().getRoleIds().remove(i); |
|
|
|
} |
|
|
|
} |
|
|
|
//先查出来在数据库中这几个数据中最大的序号是多少,然后再最大的上面进行加加操作
|
|
|
|
ProMemberRoleShowExample proMemberRoleShowExample=new ProMemberRoleShowExample(); |
|
|
|
proMemberRoleShowExample.createCriteria().andRoleIdIn(param.getParam().getRoleIds()).andRecStatusEqualTo((byte)0); |
|
|
|
List<ProMemberRoleShow> proMemberRoleShows = proMemberRoleShowMapper.selectByExample(proMemberRoleShowExample); |
|
|
|
Integer[] seq=new Integer[]{ proMemberRoleShows.stream().mapToInt(action->action.getSequence()).max().getAsInt()}; |
|
|
|
param.getParam().getRoleIds().forEach(action->{ |
|
|
|
ProMemberRoleShowExample proMemberRoleShowExample1=new ProMemberRoleShowExample(); |
|
|
|
proMemberRoleShowExample1.createCriteria().andRecStatusEqualTo((byte)0).andMemberIdEqualTo(memberId).andRoleIdEqualTo(action); |
|
|
|
ProMemberRoleShow proMemberRoleShow=new ProMemberRoleShow(); |
|
|
|
proMemberRoleShow.setSequence(++seq[0]); |
|
|
|
proMemberRoleShowMapper.updateByExampleSelective(proMemberRoleShow,proMemberRoleShowExample1); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 是否是pm |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
public boolean queryIsPm(Long projectId,Long memberId){ |
|
|
|
ProRoleExample proRoleExample=new ProRoleExample(); |
|
|
|
proRoleExample.createCriteria().andRecStatusEqualTo((byte)0).andNameEqualTo(WebConstant.ROLE_NAME.PM.value).andParentIdEqualTo(0L).andProjectIdEqualTo(projectId); |
|
|
|
//一级角色项目经理
|
|
|
|
List<Long> jili=proRoleMapper.selectByExample(proRoleExample).stream().map(action->action.getId()).collect(Collectors.toList()); |
|
|
|
//二级角色项目经理
|
|
|
|
ProRoleExample proRoleExample1=new ProRoleExample(); |
|
|
|
proRoleExample1.createCriteria().andRecStatusEqualTo((byte)0).andParentIdIn(jili); |
|
|
|
List<ProRole> proRoles = proRoleMapper.selectByExample(proRoleExample1); |
|
|
|
List<Long> jili1=proRoles.stream().map(action->action.getId()).collect(Collectors.toList()); |
|
|
|
//目前考虑的是只有一个经理
|
|
|
|
ProMemberRoleExample proMemberRoleExample=new ProMemberRoleExample(); |
|
|
|
proMemberRoleExample.createCriteria().andRecStatusEqualTo((byte)0).andMemberIdEqualTo(memberId).andRoleIdEqualTo(jili1.get(0)); |
|
|
|
List<ProMemberRole> proMemberRoles = proMemberRoleMapper.selectByExample(proMemberRoleExample); |
|
|
|
if(CollectionUtil.isEmpty(proMemberRoles)){ |
|
|
|
return false; |
|
|
|
} |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 查询成员id |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
public Long queryMemberId(Long projectId,Long userId){ |
|
|
|
ProMemberExample proMemberExample=new ProMemberExample(); |
|
|
|
proMemberExample.createCriteria().andUserIdEqualTo(param.getUserId()).andProjectIdEqualTo(param.getParam().getProjectId()).andRecStatusEqualTo((byte)0); |
|
|
|
proMemberExample.createCriteria().andUserIdEqualTo(userId).andProjectIdEqualTo(projectId).andRecStatusEqualTo((byte)0); |
|
|
|
List<ProMember> proMembers = proMemberMapper.selectByExample(proMemberExample); |
|
|
|
Long memberId=0L; |
|
|
|
if(CollectionUtil.isNotEmpty(proMembers)&&proMembers.size()==1){ |
|
|
@ -656,13 +890,6 @@ public class ProRoleService implements IProRoleService { |
|
|
|
}else { |
|
|
|
throw new BaseException(CodeEnum.CHONGFU); |
|
|
|
} |
|
|
|
RoleVo.JueSeByProIdLists jueSeByProIdLists=new RoleVo.JueSeByProIdLists(); |
|
|
|
//查询已经添加的角色
|
|
|
|
List<RoleVo.JueSeByProId> listAfter=proRoleDao.queryRoleShowslistAfter(param.getParam().getProjectId()); |
|
|
|
List<Long> listBeforeId= listAfter.stream().map(action ->{ |
|
|
|
return action.getId(); |
|
|
|
}).collect(Collectors.toList()); |
|
|
|
List<RoleVo.JueSeByProId> listBefor=proRoleDao.queryRoleShowslistBefore(memberId,listBeforeId); |
|
|
|
return null; |
|
|
|
return memberId; |
|
|
|
} |
|
|
|
} |
|
|
|