Browse Source

查询角色时去掉MVP

master
zy_Java 6 years ago
parent
commit
a50524bb86
  1. 84
      tall/src/main/java/com/ccsens/tall/service/ExcelService.java
  2. 2
      tall/src/main/java/com/ccsens/tall/service/IProTaskDetailService.java
  3. 69
      tall/src/main/java/com/ccsens/tall/service/ProRoleService.java
  4. 11
      tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java
  5. 2
      tall/src/main/java/com/ccsens/tall/util/TaskUtil.java
  6. 13
      tall/src/main/java/com/ccsens/tall/web/ProjectController.java
  7. 2
      tall/src/main/resources/mapper_dao/ProRoleDao.xml

84
tall/src/main/java/com/ccsens/tall/service/ExcelService.java

@ -7,10 +7,7 @@ import cn.hutool.core.util.StrUtil;
import com.ccsens.tall.bean.dto.WpsDto; import com.ccsens.tall.bean.dto.WpsDto;
import com.ccsens.tall.bean.po.*; import com.ccsens.tall.bean.po.*;
import com.ccsens.tall.bean.vo.ProjectVo; import com.ccsens.tall.bean.vo.ProjectVo;
import com.ccsens.tall.persist.dao.SysCommitedFileDao; import com.ccsens.tall.persist.dao.*;
import com.ccsens.tall.persist.dao.SysPluginDao;
import com.ccsens.tall.persist.dao.SysProjectDao;
import com.ccsens.tall.persist.dao.TaskDetailDao;
import com.ccsens.util.*; import com.ccsens.util.*;
import com.ccsens.util.cron.CronConstant; import com.ccsens.util.cron.CronConstant;
import com.ccsens.util.cron.NatureToDate; import com.ccsens.util.cron.NatureToDate;
@ -72,6 +69,8 @@ public class ExcelService implements IExcelService {
private IWbsSubSheetService wbsSubSheetService; private IWbsSubSheetService wbsSubSheetService;
@Resource @Resource
private IWpsService wpsService; private IWpsService wpsService;
@Resource
private ProRoleDao proRoleDao;
@Override @Override
@ -845,6 +844,8 @@ public class ExcelService implements IExcelService {
} }
} }
} }
// 添加默认例会任务
saveMeeting(taskDetails,pmRoleId,sysProject,proRoles);
//添加一个结束虚拟节点 //添加一个结束虚拟节点
ProTaskDetail endTask = new ProTaskDetail(); ProTaskDetail endTask = new ProTaskDetail();
endTask.setId(snowflake.nextId()); endTask.setId(snowflake.nextId());
@ -857,6 +858,81 @@ public class ExcelService implements IExcelService {
taskDetails.add(endTask); taskDetails.add(endTask);
} }
/**
* 添加默认的例会任务
* @param taskDetails 任务集合
* @param pmRoleId 项目经理的角色id
* @param sysProject 项目信息
* @param proRoles 所有角色
*/
private void saveMeeting(List<ProTaskDetail> taskDetails, Long pmRoleId, SysProject sysProject, List<ProRole> proRoles) {
//添加一级任务“例会”
ProTaskDetail firstTaskDetail = new ProTaskDetail();
firstTaskDetail.setId(snowflake.nextId());
firstTaskDetail.setName("例会");
firstTaskDetail.setProjectId(sysProject.getId());
firstTaskDetail.setBeginTime(sysProject.getBeginTime());
firstTaskDetail.setEndTime(sysProject.getEndTime());
firstTaskDetail.setDelay((byte) WebConstant.TASK_DELAY.SelfMotion.value);
firstTaskDetail.setVirtual((byte) WebConstant.TASK_VIRTUAL.Normal.value);
firstTaskDetail.setLevel((byte) WebConstant.TASK_LEVEL.FirstTask.value);
firstTaskDetail.setExecutorRole(pmRoleId);
proTaskDetailService.saveTaskDetail(firstTaskDetail);
taskDetails.add(firstTaskDetail);
//获取全体成员的角色id,如果没有,给每个角色添加任务
ProRoleExample proRoleExample = new ProRoleExample();
proRoleExample.createCriteria().andProjectIdEqualTo(sysProject.getId()).andNameEqualTo(WebConstant.ROLE_NAME.AllMember.phase);
List<ProRole> roles = proRoleDao.selectByExample(proRoleExample);
if(CollectionUtil.isEmpty(roles)){
if(CollectionUtil.isNotEmpty(proRoles)){
proRoles.forEach(proRole -> {
if(ObjectUtil.isNotNull(proRole.getParentId()) && proRole.getParentId() != 0 && !proRole.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.MVP.phase)){
//添加日报
saveMeetingTask("日报","每天",taskDetails,sysProject,pmRoleId,proRole.getId(),firstTaskDetail.getId());
//添加周报
saveMeetingTask("周报","每周一",taskDetails,sysProject,pmRoleId,proRole.getId(),firstTaskDetail.getId());
// TODO 添加季报
//添加月报
saveMeetingTask("月报","每月1号",taskDetails,sysProject,pmRoleId,proRole.getId(),firstTaskDetail.getId());
//添加年报
saveMeetingTask("年报","每年第一天",taskDetails,sysProject,pmRoleId,proRole.getId(),firstTaskDetail.getId());
}
});
}
}else {
//添加日报
saveMeetingTask("日报","每天",taskDetails,sysProject,pmRoleId,roles.get(0).getId(),firstTaskDetail.getId());
//添加周报
saveMeetingTask("周报","每周一",taskDetails,sysProject,pmRoleId,roles.get(0).getId(),firstTaskDetail.getId());
// TODO 添加季报
//添加月报
saveMeetingTask("月报","每月1号",taskDetails,sysProject,pmRoleId,roles.get(0).getId(),firstTaskDetail.getId());
//添加年报
saveMeetingTask("年报","每年第一天",taskDetails,sysProject,pmRoleId,roles.get(0).getId(),firstTaskDetail.getId());
}
}
private void saveMeetingTask(String name, String cycle, List<ProTaskDetail> taskDetails, SysProject sysProject,
Long checkerRoleId, Long executorRoleId,Long parentId) {
ProTaskDetail dayMeeting = new ProTaskDetail();
dayMeeting.setId(snowflake.nextId());
dayMeeting.setName(name);
dayMeeting.setCycle(cycle);
dayMeeting.setProjectId(sysProject.getId());
dayMeeting.setBeginTime(sysProject.getBeginTime());
dayMeeting.setEndTime(sysProject.getEndTime());
dayMeeting.setParentId(parentId);
dayMeeting.setLevel((byte) WebConstant.TASK_LEVEL.SecondTask.value);
dayMeeting.setVirtual((byte) WebConstant.TASK_VIRTUAL.Normal.value);
dayMeeting.setCheckerRole(checkerRoleId);
dayMeeting.setExecutorRole(executorRoleId);
dayMeeting.setHasGroup((byte) 0);
proTaskDetailService.saveTaskDetail(dayMeeting);
taskDetails.add(dayMeeting);
}
/** /**
* 分解任务时间 * 分解任务时间
* @param taskDetails 任务集合 * @param taskDetails 任务集合

2
tall/src/main/java/com/ccsens/tall/service/IProTaskDetailService.java

@ -14,6 +14,8 @@ public interface IProTaskDetailService {
Object getTasksByRoleId(Long currentUserId, Long projectId, Long roleId, Long startTime, Long endTime, Integer process, Object getTasksByRoleId(Long currentUserId, Long projectId, Long roleId, Long startTime, Long endTime, Integer process,
Integer page, Integer pageSize) throws Exception; Integer page, Integer pageSize) throws Exception;
TaskVo.ProTaskInfoByMVP getTaskInfoByMvp(Long projectId);
TaskVo.NormalTask getTaskInfoByTaskId(Long currentUserId, Long projectId, Long taskId) throws Exception; TaskVo.NormalTask getTaskInfoByTaskId(Long currentUserId, Long projectId, Long taskId) throws Exception;
TaskVo.TaskCheckList selectTaskList(Long currentUserId, String key, String start, String end, String role, Integer page, Integer pageSize) throws Exception; TaskVo.TaskCheckList selectTaskList(Long currentUserId, String key, String start, String end, String role, Integer page, Integer pageSize) throws Exception;

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

@ -14,16 +14,17 @@ import com.ccsens.util.CodeEnum;
import com.ccsens.util.WebConstant; import com.ccsens.util.WebConstant;
import com.ccsens.util.exception.BaseException; import com.ccsens.util.exception.BaseException;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; import java.util.List;
/**
* @author
*/
@Slf4j @Slf4j
@Service @Service
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
@ -31,8 +32,6 @@ public class ProRoleService implements IProRoleService {
@Resource @Resource
private ProRoleDao proRoleDao; private ProRoleDao proRoleDao;
@Resource @Resource
private ProShowDao proShowDao;
@Resource
private ProMemberDao proMemberDao; private ProMemberDao proMemberDao;
@Resource @Resource
private ProMemberRoleDao memberRoleDao; private ProMemberRoleDao memberRoleDao;
@ -68,31 +67,30 @@ public class ProRoleService implements IProRoleService {
@Override @Override
public List<ProjectVo.RoleInfo> getRolesByProjectIdAndUserId(Long projectId, Long currentUserId) throws Exception { public List<ProjectVo.RoleInfo> getRolesByProjectIdAndUserId(Long projectId, Long currentUserId) throws Exception {
List<ProjectVo.RoleInfo> memberRoleList = null; List<ProjectVo.RoleInfo> memberRoleList;
//获取用户在项目中的角色 //获取用户在项目中的角色
List<ProRole> roleList = proMemberService.selectRolesByUserIdAndProjectId(currentUserId, projectId); List<ProRole> roleList = proMemberService.selectRolesByUserIdAndProjectId(currentUserId, projectId);
//1.查询二级角色(项目经理+项目成员+mvp) //1.查询二级角色(项目经理+项目成员+mvp)
memberRoleList = getRealMemberRolesByProjectId(projectId); memberRoleList = getRealMemberRolesByProjectId(projectId);
if (CollectionUtil.isNotEmpty(memberRoleList)) { if (CollectionUtil.isNotEmpty(memberRoleList)) {
//获取项目的配置(是否展示mvp) // //获取项目的配置(是否展示mvp)
ProShowExample showExample = new ProShowExample(); // ProShowExample showExample = new ProShowExample();
showExample.createCriteria().andProjectIdEqualTo(projectId); // showExample.createCriteria().andProjectIdEqualTo(projectId);
List<ProShow> showList = proShowDao.selectByExample(showExample); // List<ProShow> showList = proShowDao.selectByExample(showExample);
if(CollectionUtil.isNotEmpty(showList)){ // if(CollectionUtil.isNotEmpty(showList)){
if(showList.get(0).getIsShowMvp() == 0){ // if(showList.get(0).getIsShowMvp() == 0){
for(int i = 0 ; i < memberRoleList.size() ; i++){ // for(int i = 0 ; i < memberRoleList.size() ; i++){
ProjectVo.RoleInfo roleInfo = memberRoleList.get(i); // ProjectVo.RoleInfo roleInfo = memberRoleList.get(i);
if(roleInfo.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.MVP.phase)){ // if(roleInfo.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.MVP.phase)){
memberRoleList.remove(i); // memberRoleList.remove(i);
break; // break;
} // }
} // }
} // }
} // }
if (CollectionUtil.isNotEmpty(roleList)) { if (CollectionUtil.isNotEmpty(roleList)) {
//用户是否只是关注者 //用户是否只是关注者
Boolean isAttention = false; boolean isAttention = false;
if(roleList.size() == 1){ if(roleList.size() == 1){
ProRole role = roleList.get(0); ProRole role = roleList.get(0);
if(role.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.Attention.phase)){ if(role.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.Attention.phase)){
@ -190,21 +188,20 @@ public class ProRoleService implements IProRoleService {
return memberRoleList; return memberRoleList;
} }
/** // /**
* 获取此用户不可见的角色 // * 获取此用户不可见的角色
* // *
* @param projectId 项目id // * @param projectId 项目id
* @param currentUserId userId // * @param currentUserId userId
* @return // * @return 返回不可见的角色id
*/ // */
public List<Long> getCareLessRoleByProjectIdAndUserId(Long projectId, Long currentUserId) { // public List<Long> getCareLessRoleByProjectIdAndUserId(Long projectId, Long currentUserId) {
return proRoleDao.selectCareLessRoleByProjectIdAndUserId(projectId, currentUserId); // return proRoleDao.selectCareLessRoleByProjectIdAndUserId(projectId, currentUserId);
} // }
/** /**
* 获取用户在项目中的最高权限 * 获取用户在项目中的最高权限
* * @return 返回权限
* @return
*/ */
@Override @Override
public int selectPowerByRoleName(Long userId, Long projectId) { public int selectPowerByRoleName(Long userId, Long projectId) {
@ -218,7 +215,7 @@ public class ProRoleService implements IProRoleService {
if (CollectionUtil.isNotEmpty(roles)) { if (CollectionUtil.isNotEmpty(roles)) {
for (ProRole role : roles) { for (ProRole role : roles) {
int i = proRoleDao.selectPowerByRoleName(role.getDescription()); int i = proRoleDao.selectPowerByRoleName(role.getDescription());
power = i > power ? i : power; power = Math.max(i, power);
} }
} }
} }
@ -271,7 +268,7 @@ public class ProRoleService implements IProRoleService {
* 删除角色 * 删除角色
*/ */
@Override @Override
public void deleteRole(Long userId, Long roleId) throws Exception { public void deleteRole(Long userId, Long roleId) {
ProRole role = proRoleDao.selectByPrimaryKey(roleId); ProRole role = proRoleDao.selectByPrimaryKey(roleId);
// //本用户在项目中的角色 // //本用户在项目中的角色
// List<ProRole> proRoles = getProRoleByProjectIdAndUserId(role.getProjectId(), userId); // List<ProRole> proRoles = getProRoleByProjectIdAndUserId(role.getProjectId(), userId);

11
tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java

@ -21,6 +21,7 @@ import com.ccsens.util.WebConstant;
import com.ccsens.util.cron.CronConstant; import com.ccsens.util.cron.CronConstant;
import com.ccsens.util.cron.NatureToDate; import com.ccsens.util.cron.NatureToDate;
import com.ccsens.util.exception.BaseException; import com.ccsens.util.exception.BaseException;
import lombok.Builder;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
@ -97,9 +98,10 @@ public class ProTaskDetailService implements IProTaskDetailService {
throw new BaseException(CodeEnum.NOT_ROLE); throw new BaseException(CodeEnum.NOT_ROLE);
} }
if (ObjectUtil.isNotNull(role)) { if (ObjectUtil.isNotNull(role)) {
if (role.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.MVP.value)) { // if (role.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.MVP.value)) {
obj = getTaskInfoByMvp(projectId, page, pageSize); // obj = getTaskInfoByMvp(projectId, page, pageSize);
} else if (parentRole.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.PM.value)) { // } else
if (parentRole.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.PM.value)) {
obj = getTaskInfoByProjectIdAndPM(currentUserId, projectId, roleId, startTime, endTime, process, page, pageSize); obj = getTaskInfoByProjectIdAndPM(currentUserId, projectId, roleId, startTime, endTime, process, page, pageSize);
} else if (parentRole.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.Member.value)) { } else if (parentRole.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.Member.value)) {
obj = getTaskInfoByProjectIdAndRoleId(currentUserId, projectId, roleId, startTime, endTime, process, page, pageSize); obj = getTaskInfoByProjectIdAndRoleId(currentUserId, projectId, roleId, startTime, endTime, process, page, pageSize);
@ -454,7 +456,8 @@ public class ProTaskDetailService implements IProTaskDetailService {
/** /**
* 点击MVP查看交付物 * 点击MVP查看交付物
*/ */
private TaskVo.ProTaskInfoByMVP getTaskInfoByMvp(Long projectId, Integer page, Integer pageSize) { @Override
public TaskVo.ProTaskInfoByMVP getTaskInfoByMvp(Long projectId) {
TaskVo.PageInfo pageInfo = new TaskVo.PageInfo(); TaskVo.PageInfo pageInfo = new TaskVo.PageInfo();
TaskVo.ProTaskInfoByMVP proTaskInfoByMVP = new TaskVo.ProTaskInfoByMVP(); TaskVo.ProTaskInfoByMVP proTaskInfoByMVP = new TaskVo.ProTaskInfoByMVP();
List<TaskVo.TaskDeliverByMVP> taskDeliverByMVPList; List<TaskVo.TaskDeliverByMVP> taskDeliverByMVPList;

2
tall/src/main/java/com/ccsens/tall/util/TaskUtil.java

@ -67,7 +67,7 @@ public class TaskUtil {
} }
if (detail.getBeginTime() <= start && detail.getEndTime() > end) { if (detail.getBeginTime() <= start && detail.getEndTime() > end) {
globalTask.add(detail); globalTask.add(detail);
} else if (detail.getBeginTime() == start && detail.getEndTime() == end){ } else if (detail.getBeginTime() == start && (detail.getEndTime() == end || detail.getEndTime() + 999 == end)){
globalTask.add(detail); globalTask.add(detail);
}else if (detail.getBeginTime() >= start && detail.getEndTime()>end) { }else if (detail.getBeginTime() >= start && detail.getEndTime()>end) {
//开始的任务点 //开始的任务点

13
tall/src/main/java/com/ccsens/tall/web/ProjectController.java

@ -130,6 +130,19 @@ public class ProjectController {
return JsonResponse.newInstance().ok(proTaskInfo); return JsonResponse.newInstance().ok(proTaskInfo);
} }
@ApiOperation(value = "根据项目id获取mvp信息",notes = "")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "项目Id", required = true, paramType = "path")
})
@RequestMapping(value = "/{id}/mvp", method = RequestMethod.GET, produces = {"application/json;charset=UTF-8"})
public JsonResponse<TaskVo.ProTaskInfo> getMvpByProjectId(HttpServletRequest request,
@PathVariable("id") Long projectId) throws Exception{
Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject());
TaskVo.ProTaskInfoByMVP mvpByProjectId = taskDetailService.getTaskInfoByMvp(projectId);
return JsonResponse.newInstance().ok(mvpByProjectId);
}
@ApiOperation(value = "根据任务id获取任务详细信息(包含插件)",notes = "") @ApiOperation(value = "根据任务id获取任务详细信息(包含插件)",notes = "")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "项目Id", required = true, paramType = "path"), @ApiImplicitParam(name = "id", value = "项目Id", required = true, paramType = "path"),

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

@ -72,7 +72,7 @@
and and
(SELECT name FROM t_pro_role r WHERE pr.parent_id = r.id) in ('PM','Member') (SELECT name FROM t_pro_role r WHERE pr.parent_id = r.id) in ('PM','Member')
AND AND
pr.name not IN ('全体成员','观众') pr.name not IN ('全体成员','观众','MVP')
AND AND
pr.rec_status = 0 pr.rec_status = 0
AND (mr.rec_status = 0 or mr.rec_status is null) AND (mr.rec_status = 0 or mr.rec_status is null)

Loading…
Cancel
Save