Browse Source

查询角色时去掉MVP

master
zy_Java 5 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.po.*;
import com.ccsens.tall.bean.vo.ProjectVo;
import com.ccsens.tall.persist.dao.SysCommitedFileDao;
import com.ccsens.tall.persist.dao.SysPluginDao;
import com.ccsens.tall.persist.dao.SysProjectDao;
import com.ccsens.tall.persist.dao.TaskDetailDao;
import com.ccsens.tall.persist.dao.*;
import com.ccsens.util.*;
import com.ccsens.util.cron.CronConstant;
import com.ccsens.util.cron.NatureToDate;
@ -72,6 +69,8 @@ public class ExcelService implements IExcelService {
private IWbsSubSheetService wbsSubSheetService;
@Resource
private IWpsService wpsService;
@Resource
private ProRoleDao proRoleDao;
@Override
@ -845,6 +844,8 @@ public class ExcelService implements IExcelService {
}
}
}
// 添加默认例会任务
saveMeeting(taskDetails,pmRoleId,sysProject,proRoles);
//添加一个结束虚拟节点
ProTaskDetail endTask = new ProTaskDetail();
endTask.setId(snowflake.nextId());
@ -857,6 +858,81 @@ public class ExcelService implements IExcelService {
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 任务集合

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,
Integer page, Integer pageSize) throws Exception;
TaskVo.ProTaskInfoByMVP getTaskInfoByMvp(Long projectId);
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;

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.exception.BaseException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* @author
*/
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
@ -31,8 +32,6 @@ public class ProRoleService implements IProRoleService {
@Resource
private ProRoleDao proRoleDao;
@Resource
private ProShowDao proShowDao;
@Resource
private ProMemberDao proMemberDao;
@Resource
private ProMemberRoleDao memberRoleDao;
@ -68,31 +67,30 @@ public class ProRoleService implements IProRoleService {
@Override
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);
//1.查询二级角色(项目经理+项目成员+mvp)
memberRoleList = getRealMemberRolesByProjectId(projectId);
if (CollectionUtil.isNotEmpty(memberRoleList)) {
//获取项目的配置(是否展示mvp)
ProShowExample showExample = new ProShowExample();
showExample.createCriteria().andProjectIdEqualTo(projectId);
List<ProShow> showList = proShowDao.selectByExample(showExample);
if(CollectionUtil.isNotEmpty(showList)){
if(showList.get(0).getIsShowMvp() == 0){
for(int i = 0 ; i < memberRoleList.size() ; i++){
ProjectVo.RoleInfo roleInfo = memberRoleList.get(i);
if(roleInfo.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.MVP.phase)){
memberRoleList.remove(i);
break;
}
}
}
}
// //获取项目的配置(是否展示mvp)
// ProShowExample showExample = new ProShowExample();
// showExample.createCriteria().andProjectIdEqualTo(projectId);
// List<ProShow> showList = proShowDao.selectByExample(showExample);
// if(CollectionUtil.isNotEmpty(showList)){
// if(showList.get(0).getIsShowMvp() == 0){
// for(int i = 0 ; i < memberRoleList.size() ; i++){
// ProjectVo.RoleInfo roleInfo = memberRoleList.get(i);
// if(roleInfo.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.MVP.phase)){
// memberRoleList.remove(i);
// break;
// }
// }
// }
// }
if (CollectionUtil.isNotEmpty(roleList)) {
//用户是否只是关注者
Boolean isAttention = false;
boolean isAttention = false;
if(roleList.size() == 1){
ProRole role = roleList.get(0);
if(role.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.Attention.phase)){
@ -190,21 +188,20 @@ public class ProRoleService implements IProRoleService {
return memberRoleList;
}
/**
* 获取此用户不可见的角色
*
* @param projectId 项目id
* @param currentUserId userId
* @return
*/
public List<Long> getCareLessRoleByProjectIdAndUserId(Long projectId, Long currentUserId) {
return proRoleDao.selectCareLessRoleByProjectIdAndUserId(projectId, currentUserId);
}
// /**
// * 获取此用户不可见的角色
// *
// * @param projectId 项目id
// * @param currentUserId userId
// * @return 返回不可见的角色id
// */
// public List<Long> getCareLessRoleByProjectIdAndUserId(Long projectId, Long currentUserId) {
// return proRoleDao.selectCareLessRoleByProjectIdAndUserId(projectId, currentUserId);
// }
/**
* 获取用户在项目中的最高权限
*
* @return
* @return 返回权限
*/
@Override
public int selectPowerByRoleName(Long userId, Long projectId) {
@ -218,7 +215,7 @@ public class ProRoleService implements IProRoleService {
if (CollectionUtil.isNotEmpty(roles)) {
for (ProRole role : roles) {
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
public void deleteRole(Long userId, Long roleId) throws Exception {
public void deleteRole(Long userId, Long roleId) {
ProRole role = proRoleDao.selectByPrimaryKey(roleId);
// //本用户在项目中的角色
// 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.NatureToDate;
import com.ccsens.util.exception.BaseException;
import lombok.Builder;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
@ -97,9 +98,10 @@ public class ProTaskDetailService implements IProTaskDetailService {
throw new BaseException(CodeEnum.NOT_ROLE);
}
if (ObjectUtil.isNotNull(role)) {
if (role.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.MVP.value)) {
obj = getTaskInfoByMvp(projectId, page, pageSize);
} else if (parentRole.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.PM.value)) {
// if (role.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.MVP.value)) {
// obj = getTaskInfoByMvp(projectId, page, pageSize);
// } else
if (parentRole.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.PM.value)) {
obj = getTaskInfoByProjectIdAndPM(currentUserId, projectId, roleId, startTime, endTime, process, page, pageSize);
} else if (parentRole.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.Member.value)) {
obj = getTaskInfoByProjectIdAndRoleId(currentUserId, projectId, roleId, startTime, endTime, process, page, pageSize);
@ -454,7 +456,8 @@ public class ProTaskDetailService implements IProTaskDetailService {
/**
* 点击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.ProTaskInfoByMVP proTaskInfoByMVP = new TaskVo.ProTaskInfoByMVP();
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) {
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);
}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);
}
@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 = "")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "项目Id", required = true, paramType = "path"),

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

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

Loading…
Cancel
Save