Browse Source

修改项目信息

master
zhangye 6 years ago
parent
commit
62d0937ad6
  1. 6
      cloudutil/src/main/java/com/ccsens/cloudutil/aspect/LogAspect.java
  2. 5
      tall/src/main/java/com/ccsens/tall/bean/dto/ProjectDto.java
  3. 23
      tall/src/main/java/com/ccsens/tall/bean/dto/TaskDto.java
  4. 2
      tall/src/main/java/com/ccsens/tall/bean/vo/TaskVo.java
  5. 3
      tall/src/main/java/com/ccsens/tall/service/IProTaskDetailService.java
  6. 5
      tall/src/main/java/com/ccsens/tall/service/IProjectService.java
  7. 82
      tall/src/main/java/com/ccsens/tall/service/ProRoleService.java
  8. 131
      tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java
  9. 65
      tall/src/main/java/com/ccsens/tall/service/ProjectService.java
  10. 27
      tall/src/main/java/com/ccsens/tall/web/MemberRoleController.java
  11. 17
      tall/src/main/java/com/ccsens/tall/web/ProjectController.java
  12. 15
      tall/src/main/java/com/ccsens/tall/web/TaskController.java
  13. 23
      util/src/main/java/com/ccsens/util/CodeEnum.java
  14. 2
      util/src/main/java/com/ccsens/util/WebConstant.java

6
cloudutil/src/main/java/com/ccsens/cloudutil/aspect/LogAspect.java

@ -31,10 +31,10 @@ import java.lang.reflect.Method;
* @author: wuHuiJuan
* @create: 2019/12/10 10:06
*/
@Order(1)
//@Order(1)
@Slf4j
@Aspect
@Component
//@Aspect
//@Component
public class LogAspect {
@Autowired

5
tall/src/main/java/com/ccsens/tall/bean/dto/ProjectDto.java

@ -6,6 +6,8 @@ import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotNull;
public class ProjectDto {
@Data
@ApiModel
@ -48,7 +50,8 @@ public class ProjectDto {
@Data
@ApiModel
public static class ProjectIdDto{
@ApiModelProperty("根据哪个项目拷贝")
@ApiModelProperty("项目id")
@NotNull(message = "项目id不能为空")
private Long projectId;
}

23
tall/src/main/java/com/ccsens/tall/bean/dto/TaskDto.java

@ -92,15 +92,6 @@ public class TaskDto {
private Long taskId;
}
@Data
public static class DeleteTask {
@NotNull(message = "projectId is required.")
private Long projectId;
@NotNull(message = "roleId is required.")
private Long roleId;
private Long taskId;
}
@Data
public static class MoveTask {
@NotNull(message = "projectId is required.")
@ -123,21 +114,27 @@ public class TaskDto {
@Data
@ApiModel
public static class UpdateTask{
public static class UpdateTaskInfo{
@ApiModelProperty("任务id")
private Long id;
@ApiModelProperty("任务名")
private String name;
@ApiModelProperty("任务详情")
private String description;
@ApiModelProperty("负责人")
private Long executorRole;
@ApiModelProperty("任务开始时间")
private Long beginTime;
@ApiModelProperty("任务时长")
private Long duration;
@ApiModelProperty("任务结束时间")
private Long endTime;
@ApiModelProperty("重复频率")
private String cycle;
@ApiModelProperty("任务奖惩")
private Long money;
@ApiModelProperty("任务切换模式")
@ApiModelProperty("任务切换模式,0时间到立刻切换 1延迟delay_time切换 2手动切换")
private int delay;
@ApiModelProperty("延迟切换时间")
private Long delayTime;
}
@ApiModel

2
tall/src/main/java/com/ccsens/tall/bean/vo/TaskVo.java

@ -91,7 +91,7 @@ public class TaskVo {
private String showTimeFormat;
@ApiModelProperty("循环周期")
private String cycle;
@ApiModelProperty("跳转模式 -1手动,0自动,1延迟")
@ApiModelProperty("跳转模式 0自动,1延迟,2手动")
private int delay;
@ApiModelProperty("实际开始时间")
private Long realBeginTime;

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

@ -1,5 +1,6 @@
package com.ccsens.tall.service;
import com.ccsens.tall.bean.dto.TaskDto;
import com.ccsens.tall.bean.po.ProTaskDetail;
import com.ccsens.tall.bean.vo.TaskVo;
@ -23,4 +24,6 @@ public interface IProTaskDetailService {
void deleteTask(Long currentUserId,Long taskId);
void deleteTaskByRoleId(Long taskId);
TaskVo.NormalTask updateTaskInfo(Long currentUserId, TaskDto.UpdateTaskInfo updateTaskInfo) throws Exception;
}

5
tall/src/main/java/com/ccsens/tall/service/IProjectService.java

@ -1,5 +1,6 @@
package com.ccsens.tall.service;
import com.ccsens.tall.bean.dto.ProjectDto;
import com.ccsens.tall.bean.po.SysProject;
import com.ccsens.tall.bean.vo.ProjectVo;
@ -28,5 +29,7 @@ public interface IProjectService {
void deleteProject(Long currentUserId, Long projectId)throws Exception;
ProjectVo.ProjectInfo copyProject(Long userId, Long projectId);
ProjectVo.ProjectInfo copyProject(Long userId, ProjectDto.ProjectIdDto projectDto);
ProjectVo.ProjectInfo changeProjectInfo(Long currentUserId, ProjectDto.ProjectInfoDto projectInfoDto);
}

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

@ -21,7 +21,7 @@ import java.util.List;
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class ProRoleService implements IProRoleService {
@Autowired
private ProRoleDao proRoleDao;
@ -50,7 +50,7 @@ public class ProRoleService implements IProRoleService {
*/
@Override
public List<ProRole> getProRoleByProjectIdAndUserId(Long projectId, Long currentUserId) {
return proRoleDao.selectFirstRoleByProjectIdAndUserId(projectId,currentUserId);
return proRoleDao.selectFirstRoleByProjectIdAndUserId(projectId, currentUserId);
}
/**
@ -63,11 +63,24 @@ public class ProRoleService implements IProRoleService {
memberRoleList = getRealMemberRolesByProjectId(projectId);
//获取用户在项目中的角色
List<ProRole> roleList = proMemberService.selectRolesByUserIdAndProjectId(currentUserId, projectId);
//是否mine
if (CollectionUtil.isNotEmpty(memberRoleList)) {
if (CollectionUtil.isNotEmpty(roleList)) {
//用户是否只是关注者
Boolean isAttention = false;
if(roleList.size() == 1){
ProRole role = roleList.get(0);
if(role.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.Attention.phase)){
isAttention = true;
}
}
//是否mine(若是用户是关注者,则所有角色都暂时属于关注者)
for (ProjectVo.RoleInfo memberRole : memberRoleList) {
if (ObjectUtil.isNotNull(roleList)) {
for(ProRole role:roleList){
if(isAttention){
memberRole.setMine(true);
continue;
}
for (ProRole role : roleList) {
if (memberRole.getId().equals(role.getId())) {
memberRole.setMine(true);
break;
@ -76,29 +89,26 @@ public class ProRoleService implements IProRoleService {
}
}
}
}
}
//排除该角色不能看的其他角色
// List<Long> carelessMemberRoleList = getCareLessRoleByProjectIdAndUserId(projectId, currentUserId);
List<Long> excludeIdList = new ArrayList<>();
if(CollectionUtil.isNotEmpty(roleList)){
for(ProRole role :roleList){
for (ProRole role : roleList) {
ProRoleExcludeExample excludeExample = new ProRoleExcludeExample();
excludeExample.createCriteria().andOtherRoleIdEqualTo(role.getId());
List<ProRoleExclude> excludeList = excludeDao.selectByExample(excludeExample);
if(CollectionUtil.isNotEmpty(excludeList)){
for(ProRoleExclude roleExclude : excludeList){
if (CollectionUtil.isNotEmpty(excludeList)) {
for (ProRoleExclude roleExclude : excludeList) {
excludeIdList.add(roleExclude.getRoleId());
}
}
}
}
if (CollectionUtil.isNotEmpty(excludeIdList)) {
for (Long otherRoleId : excludeIdList) {
for (ProjectVo.RoleInfo memberRole : memberRoleList) {
if (otherRoleId.longValue() == memberRole.getId().longValue()) {
if(!memberRole.isMine()){
//若是关注者,正常删除。若不是关注者,不删除自己所属的角色
if(isAttention){
memberRoleList.remove(memberRole);
}else if (!memberRole.isMine()) {
memberRoleList.remove(memberRole);
}
break;
@ -106,9 +116,8 @@ public class ProRoleService implements IProRoleService {
}
}
}
}
//是否PM
if (CollectionUtil.isNotEmpty(memberRoleList)) {
for (ProjectVo.RoleInfo memberRole : memberRoleList) {
ProRole parentRole = proRoleDao.selectByPrimaryKey(memberRole.getParentId());
if (parentRole.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.PM.value)) {
@ -117,25 +126,22 @@ public class ProRoleService implements IProRoleService {
memberRole.setPm(false);
}
}
}
//奖惩干系人信息
if (CollectionUtil.isNotEmpty(memberRoleList)) {
for (ProjectVo.RoleInfo memberRole : memberRoleList) {
if (CollectionUtil.isNotEmpty(memberRole.getMembers())) {
for (ProjectVo.ProMemberVo member : memberRole.getMembers()) {
String mAccount = userService.selectAccountByPhone(member.getMPhone());
member.setMUsername(mAccount);
//查找奖惩干系人
if(ObjectUtil.isNotNull(member.getStakeholderId())) {
if (ObjectUtil.isNotNull(member.getStakeholderId())) {
ProMember stakeholder = proMemberDao.selectByPrimaryKey(member.getStakeholderId());
if(ObjectUtil.isNotNull(stakeholder)){
if (ObjectUtil.isNotNull(stakeholder)) {
member.setSId(stakeholder.getId());
member.setSName(stakeholder.getNickname());
member.setMPhone(stakeholder.getPhone());
String stakeholderAccount = userService.selectAccountByPhone(member.getMPhone());
member.setSUsername(stakeholderAccount);
if(ObjectUtil.isNotNull(stakeholder.getUserId())){
if (ObjectUtil.isNotNull(stakeholder.getUserId())) {
if (currentUserId.longValue() == stakeholder.getUserId()) {
member.setStakeholder(true);
}
@ -159,6 +165,7 @@ public class ProRoleService implements IProRoleService {
/**
* 获取此用户不可见的角色
*
* @param projectId
* @param currentUserId
* @return
@ -169,18 +176,19 @@ public class ProRoleService implements IProRoleService {
/**
* 获取用户在项目中的最高权限
*
* @return
*/
@Override
public int selectPowerByRoleName(Long userId,Long projectId) {
public int selectPowerByRoleName(Long userId, Long projectId) {
int power = 0;
SysProject project = projectDao.selectByPrimaryKey(projectId);
if(project.getCreatorId().longValue() == userId){
if (project.getCreatorId().longValue() == userId) {
power = 2;
}
List<ProRole> roles = getProRoleByProjectIdAndUserId(projectId,userId);
if(CollectionUtil.isNotEmpty(roles)){
for(ProRole role:roles){
List<ProRole> roles = getProRoleByProjectIdAndUserId(projectId, userId);
if (CollectionUtil.isNotEmpty(roles)) {
for (ProRole role : roles) {
int i = proRoleDao.selectPowerByRoleName(role.getDescription());
power = i > power ? i : power;
}
@ -194,7 +202,7 @@ public class ProRoleService implements IProRoleService {
@Override
public TaskVo.RoleCheckList selectRoleByCheckOrExecutor(Long roleId) {
TaskVo.RoleCheckList roleCheckList = new TaskVo.RoleCheckList();
if(roleId != 0) {
if (roleId != 0) {
ProRole role = proRoleDao.selectByPrimaryKey(roleId);
roleCheckList.setId(role.getId());
roleCheckList.setName(role.getName());
@ -211,7 +219,7 @@ public class ProRoleService implements IProRoleService {
ProRoleExample roleExample = new ProRoleExample();
roleExample.createCriteria().andProjectIdEqualTo(projectId).andNameEqualTo(WebConstant.ROLE_NAME.AllMember.phase);
List<ProRole> roleList = proRoleDao.selectByExample(roleExample);
if(CollectionUtil.isNotEmpty(roleList)){
if (CollectionUtil.isNotEmpty(roleList)) {
role = roleList.get(0);
}
return role;
@ -223,12 +231,12 @@ public class ProRoleService implements IProRoleService {
* 删除角色
*/
@Override
public void deleteRole(Long userId,Long roleId){
public void deleteRole(Long userId, Long roleId) {
ProRole role = proRoleDao.selectByPrimaryKey(roleId);
//本用户在项目中的角色
List<ProRole> proRoles = getProRoleByProjectIdAndUserId(role.getProjectId(), userId);
//用户在项目中的最高权限
int power = selectPowerByRoleName(userId,role.getProjectId());
int power = selectPowerByRoleName(userId, role.getProjectId());
if (power > 1) {
deleteRoleByRoleId(roleId);
} else {
@ -244,22 +252,22 @@ public class ProRoleService implements IProRoleService {
ProRoleExample roleExample = new ProRoleExample();
roleExample.createCriteria().andProjectIdEqualTo(projectId);
List<ProRole> roleList = proRoleDao.selectByExample(roleExample);
if(CollectionUtil.isNotEmpty(roleList)){
for(ProRole role:roleList){
if (CollectionUtil.isNotEmpty(roleList)) {
for (ProRole role : roleList) {
deleteRoleByRoleId(role.getId());
}
}
}
private void deleteRoleByRoleId(Long roleId){
private void deleteRoleByRoleId(Long roleId) {
//删除角色下的任务
taskDetailService.deleteTaskByRoleId(roleId);
//删除成员和成员角色关联表
ProMemberRoleExample memberRoleExample = new ProMemberRoleExample();
memberRoleExample.createCriteria().andRoleIdEqualTo(roleId);
List<ProMemberRole> memberRoleList = memberRoleDao.selectByExample(memberRoleExample);
if(CollectionUtil.isNotEmpty(memberRoleList)){
for(ProMemberRole memberRole:memberRoleList){
if (CollectionUtil.isNotEmpty(memberRoleList)) {
for (ProMemberRole memberRole : memberRoleList) {
proMemberDao.deleteByPrimaryKey(memberRole.getMemberId());
memberRoleDao.deleteByPrimaryKey(memberRole.getId());
}

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

@ -2,8 +2,10 @@ package com.ccsens.tall.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.ccsens.tall.bean.dto.TaskDto;
import com.ccsens.tall.bean.po.*;
import com.ccsens.tall.bean.vo.ProjectVo;
import com.ccsens.tall.bean.vo.TaskVo;
@ -12,7 +14,11 @@ import com.ccsens.tall.util.TaskUtil;
import com.ccsens.util.CodeEnum;
import com.ccsens.util.DateUtil;
import com.ccsens.util.WebConstant;
import com.ccsens.util.cron.CronConstant;
import com.ccsens.util.cron.NatureToDate;
import com.ccsens.util.exception.BaseException;
import com.sun.org.apache.bcel.internal.classfile.Code;
import io.swagger.annotations.ApiModelProperty;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
@ -20,6 +26,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.sql.Struct;
import java.util.*;
@ -55,6 +62,8 @@ public class ProTaskDetailService implements IProTaskDetailService {
private SysProjectDao sysProjectDao;
@Autowired
private TaskPluginDao taskPluginDao;
@Autowired
private Snowflake snowflake;
@Override
public void saveTaskDetail(ProTaskDetail taskDetail) {
@ -760,8 +769,8 @@ public class ProTaskDetailService implements IProTaskDetailService {
*/
@Override
public List<TaskVo.TaskDetailByKey> getTaskDetailByKey(Long currentUserId, Long projectId, String key) {
List<TaskVo.TaskDetailByKey> taskDetailByKeyList = taskDetailDao.selectTaskByKey(currentUserId, projectId, key);
return taskDetailByKeyList;
// List<TaskVo.TaskDetailByKey> taskDetailByKeyList = taskDetailDao.selectTaskByKey(currentUserId, projectId, key);
return taskDetailDao.selectTaskByKey(currentUserId, projectId, key);
}
/**
@ -769,8 +778,7 @@ public class ProTaskDetailService implements IProTaskDetailService {
*/
@Override
public TaskVo.NormalTask selectTaskByParentId(Long parentId, Long startTime, Long endTime) {
TaskVo.NormalTask normalTask = taskDetailDao.selectTaskByParentIdAndTime(parentId, startTime, endTime);
return normalTask;
return taskDetailDao.selectTaskByParentIdAndTime(parentId, startTime, endTime);
}
/**
@ -878,4 +886,119 @@ public class ProTaskDetailService implements IProTaskDetailService {
taskDetailDao.selectTaskByDetailId(taskId);
}
/**
* 修改任务信息
*/
@Override
public TaskVo.NormalTask updateTaskInfo(Long currentUserId, TaskDto.UpdateTaskInfo updateTaskInfo) throws Exception {
TaskVo.NormalTask normalTask = null;
ProTaskDetail taskDetail = null;
ProTaskSubTime taskSubTime = taskSubTimeDao.selectByPrimaryKey(updateTaskInfo.getId());
if(ObjectUtil.isNotNull(taskSubTime)){
taskDetail = taskDetailDao.selectByPrimaryKey(taskSubTime.getTaskDetailId());
}else {
taskDetail = taskDetailDao.selectByPrimaryKey(updateTaskInfo.getId());
}
if(ObjectUtil.isNotNull(taskDetail)) {
SysProject project = sysProjectDao.selectByPrimaryKey(taskDetail.getProjectId());
if(ObjectUtil.isNotNull(project)) {
int power = proRoleService.selectPowerByRoleName(currentUserId, project.getId());
if (power > 1) {
//任务名
if(StrUtil.isNotEmpty(updateTaskInfo.getName())){
taskDetail.setName(updateTaskInfo.getName());
}
//详情
if(StrUtil.isNotEmpty(updateTaskInfo.getDescription())){
taskDetail.setDescription(updateTaskInfo.getDescription());
}
//负责人
if(ObjectUtil.isNotNull(updateTaskInfo.getExecutorRole())){
taskDetail.setExecutorRole(updateTaskInfo.getExecutorRole());
}
//奖惩金额
if(ObjectUtil.isNotNull(updateTaskInfo.getMoney())){
taskDetail.setMoney(updateTaskInfo.getMoney());
}
//切换模式
if(ObjectUtil.isNotNull(updateTaskInfo.getDelay())){
taskDetail.setDelay((byte) updateTaskInfo.getDelay());
}
//延迟切换时间
if(ObjectUtil.isNotNull(updateTaskInfo.getDelayTime()) &&
(taskDetail.getDelay() == WebConstant.TASK_DELAY.DelayManual.value)){
taskDetail.setDelayTime(updateTaskInfo.getDelayTime());
}
//时间
// if(ObjectUtil.isNotNull(updateTaskInfo.getBeginTime())
// && ObjectUtil.isNotNull(updateTaskInfo.getEndTime())
// && updateTaskInfo.getBeginTime() >= updateTaskInfo.getEndTime()){
// throw new BaseException(CodeEnum.TIME_ERROR_BEGIN);
// }
boolean isUpdateTime = false;
if(ObjectUtil.isNotNull(updateTaskInfo.getBeginTime())){
taskDetail.setBeginTime(updateTaskInfo.getBeginTime());
isUpdateTime = true;
}
if(ObjectUtil.isNotNull(updateTaskInfo.getEndTime())){
taskDetail.setEndTime(updateTaskInfo.getEndTime());
isUpdateTime = true;
}
if(StrUtil.isNotEmpty(updateTaskInfo.getCycle())){
taskDetail.setCycle(updateTaskInfo.getCycle());
isUpdateTime = true;
}
//时间赋完值后,检查开始时间是否小于结束时间。(赋值前判断太麻烦)
//若时间相关被修改,删掉旧的subTime,根据新时间重新生成
if(isUpdateTime){
//删掉旧的subTime
ProTaskSubTimeExample subTimeExample = new ProTaskSubTimeExample();
subTimeExample.createCriteria().andTaskDetailIdEqualTo(taskDetail.getId());
taskSubTimeDao.deleteByExample(subTimeExample);
//重新生成subTime
partTaskSubTime(taskDetail);
}
//修改数据
taskDetailDao.updateByPrimaryKeySelective(taskDetail);
//返回的任务详细信息
normalTask = getTaskInfoByTaskId(currentUserId,project.getId(),updateTaskInfo.getId());
}
}else {
throw new BaseException(CodeEnum.NOT_POWER);
}
}else {
throw new BaseException(CodeEnum.NOT_TASK);
}
return normalTask;
}
private void partTaskSubTime(ProTaskDetail taskDetail){
//cycle为空或者组任务,只加一条数据
if (StrUtil.isEmpty(taskDetail.getCycle()) || taskDetail.getHasGroup() == 1) {
ProTaskSubTime proTaskSubTime = new ProTaskSubTime();
proTaskSubTime.setId(snowflake.nextId());
proTaskSubTime.setEndTime(taskDetail.getEndTime());
proTaskSubTime.setBeginTime(taskDetail.getBeginTime());
proTaskSubTime.setTaskDetailId(taskDetail.getId());
taskSubTimeDao.insertSelective(proTaskSubTime);
} else {
Date startDate = new Date(taskDetail.getBeginTime());
Date endDate = new Date(taskDetail.getEndTime());
List<CronConstant.TaskDate> taskDateList =
NatureToDate.generateDates(taskDetail.getCycle(), startDate, endDate);
if (CollectionUtil.isEmpty(taskDateList)) {
return;
}
for (CronConstant.TaskDate taskDate : taskDateList) {
ProTaskSubTime proTaskSubTime = new ProTaskSubTime();
proTaskSubTime.setId(snowflake.nextId());
proTaskSubTime.setBeginTime(taskDate.getStartDate().getTime());
proTaskSubTime.setEndTime(taskDate.getEndDate().getTime());
proTaskSubTime.setTaskDetailId(taskDetail.getId());
taskSubTimeDao.insertSelective(proTaskSubTime);
}
}
}
}

65
tall/src/main/java/com/ccsens/tall/service/ProjectService.java

@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.ccsens.tall.bean.dto.ProjectDto;
import com.ccsens.tall.bean.po.*;
import com.ccsens.tall.bean.vo.ProjectVo;
import com.ccsens.tall.persist.dao.*;
@ -419,10 +420,10 @@ public class ProjectService implements IProjectService {
* 复制项目
*/
@Override
public ProjectVo.ProjectInfo copyProject(Long userId, Long projectId) {
public ProjectVo.ProjectInfo copyProject(Long userId, ProjectDto.ProjectIdDto projectDto) {
ProjectVo.ProjectInfo projectInfo = new ProjectVo.ProjectInfo();
SysProject oldProject = sysProjectDao.selectByPrimaryKey(projectId);
SysProject oldProject = sysProjectDao.selectByPrimaryKey(projectDto.getProjectId());
SysProject newProject = new SysProject();
if (ObjectUtil.isNotNull(oldProject)) {
BeanUtil.copyProperties(oldProject, newProject);
@ -441,15 +442,16 @@ public class ProjectService implements IProjectService {
throw new BaseException(CodeEnum.NOT_PROJECT);
}
//返回参数
projectInfo.setId(newProject.getId());
projectInfo.setName(newProject.getName());
projectInfo.setAddress(newProject.getAddress());
projectInfo.setBeginTime(newProject.getBeginTime());
projectInfo.setEndTime(newProject.getEndTime());
projectInfo.setTotalDuration(newProject.getEndTime() - newProject.getBeginTime());
if (ObjectUtil.isNotNull(projectInfo)) {
projectInfo.setCreator(true);
}
projectInfo = getProjectInfoById(userId,newProject.getId());
// projectInfo.setId(newProject.getId());
// projectInfo.setName(newProject.getName());
// projectInfo.setAddress(newProject.getAddress());
// projectInfo.setBeginTime(newProject.getBeginTime());
// projectInfo.setEndTime(newProject.getEndTime());
// projectInfo.setTotalDuration(newProject.getEndTime() - newProject.getBeginTime());
// if (ObjectUtil.isNotNull(projectInfo)) {
// projectInfo.setCreator(true);
// }
return projectInfo;
}
@ -487,13 +489,12 @@ public class ProjectService implements IProjectService {
}
}
//添加对谁不可见
copyRoleExeclude(oldRoleList, oldRoleMap, newRoleMap);
copyRoleExclude(oldRoleList, oldRoleMap, newRoleMap);
//复制任务
copyTask(oldProjectId, newProjectId, oldRoleMap, newRoleMap);
}
}
private void copyRoleExeclude(List<ProRole> oldRoleList, Map<Long, String> oldRoleMap, Map<String, Long> newRoleMap) {
private void copyRoleExclude(List<ProRole> oldRoleList, Map<Long, String> oldRoleMap, Map<String, Long> newRoleMap) {
if (CollectionUtil.isNotEmpty(oldRoleList)) {
for (ProRole oldRole : oldRoleList) {
ProRoleExcludeExample execludeExample = new ProRoleExcludeExample();
@ -642,4 +643,40 @@ public class ProjectService implements IProjectService {
}
}
}
/**
* 修改项目信息
*/
@Override
public ProjectVo.ProjectInfo changeProjectInfo(Long currentUserId, ProjectDto.ProjectInfoDto projectInfoDto) {
//查找项目
SysProject project = sysProjectDao.selectByPrimaryKey(projectInfoDto.getId());
if(ObjectUtil.isNotNull(project)) {
int power = proRoleService.selectPowerByRoleName(currentUserId, project.getId());
if (power > 1) {
if (StrUtil.isNotEmpty(projectInfoDto.getName())) {
SysProjectExample projectExample = new SysProjectExample();
projectExample.createCriteria().andNameEqualTo(projectInfoDto.getName());
List<SysProject> projectList = sysProjectDao.selectByExample(projectExample);
if(CollectionUtil.isNotEmpty(projectList)){
throw new BaseException(CodeEnum.REPEAT_PROJECT_NAME);
}else {
project.setName(projectInfoDto.getName());
}
}
if (StrUtil.isNotEmpty(projectInfoDto.getDescription())) {
project.setDescription(projectInfoDto.getDescription());
}
if (StrUtil.isNotEmpty(projectInfoDto.getAddress())) {
project.setAddress(projectInfoDto.getAddress());
}
sysProjectDao.updateByPrimaryKeySelective(project);
} else {
throw new BaseException(CodeEnum.NOT_POWER);
}
}else {
throw new BaseException(CodeEnum.NOT_PROJECT);
}
return getProjectInfoById(currentUserId,project.getId());
}
}

27
tall/src/main/java/com/ccsens/tall/web/MemberRoleController.java

@ -4,20 +4,19 @@ import com.ccsens.cloudutil.bean.tall.dto.MemberRoleDto;
import com.ccsens.cloudutil.bean.tall.vo.UserVo;
import com.ccsens.tall.bean.dto.UserDto;
import com.ccsens.tall.service.IProMemberRoleService;
import com.ccsens.tall.service.IProRoleService;
import com.ccsens.tall.service.IUserService;
import com.ccsens.util.CodeEnum;
import com.ccsens.util.JsonResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import com.ccsens.util.WebConstant;
import io.jsonwebtoken.Claims;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.Map;
/**
@ -33,6 +32,8 @@ public class MemberRoleController {
@Autowired
private IProMemberRoleService memberRoleService;
@Autowired
private IProRoleService proRoleService;
@Autowired
private IUserService userService;
@ApiOperation(value = "默认注册",notes = "默认帮助用户注册")
@ -73,5 +74,15 @@ public class MemberRoleController {
return JsonResponse.newInstance().ok(codeEnum);
}
@ApiOperation(value = "删除角色",notes = "")
@ApiImplicitParams({
@ApiImplicitParam(name = "roleId", value = "角色Id", required = true, paramType = "query")
})
@RequestMapping(value = "", method = RequestMethod.DELETE, produces = {"application/json;charset=UTF-8"})
public JsonResponse deleteTask(HttpServletRequest request,
@RequestParam(required = false)Long roleId) throws Exception {
Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject());
proRoleService.deleteRole(currentUserId,roleId);
return JsonResponse.newInstance().ok();
}
}

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

@ -1,5 +1,6 @@
package com.ccsens.tall.web;
import com.ccsens.tall.bean.dto.ProjectDto;
import com.ccsens.tall.bean.vo.ProjectVo;
import com.ccsens.tall.bean.vo.TaskVo;
import com.ccsens.tall.service.IProMemberService;
@ -14,6 +15,7 @@ import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
@ -193,22 +195,23 @@ public class ProjectController {
@ApiOperation(value = "根据模板复制项目", notes = "")
@ApiImplicitParams({
@ApiImplicitParam(name = "projectId", value = "项目id", required = true, paramType = "query")
})
@RequestMapping(value = "copy", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<ProjectVo.ProjectInfo> addProject(HttpServletRequest request,@RequestParam(required = false) Long projectId) throws Exception {
public JsonResponse<ProjectVo.ProjectInfo> addProject(HttpServletRequest request,
@Validated @RequestBody ProjectDto.ProjectIdDto projectDto) throws Exception {
Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject());
ProjectVo.ProjectInfo projectInfo = projectService.copyProject(currentUserId,projectId);
ProjectVo.ProjectInfo projectInfo = projectService.copyProject(currentUserId,projectDto);
return JsonResponse.newInstance().ok(projectInfo);
}
@ApiOperation(value = "修改项目信息", notes = "")
@ApiImplicitParams({
@ApiImplicitParam(name = "projectId", value = "项目id", required = true, paramType = "query")
})
@RequestMapping(value = "update", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<ProjectVo.ProjectInfo> updateProject(HttpServletRequest request,@RequestParam(required = false) Long projectId) throws Exception {
@RequestMapping(value = "change", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<ProjectVo.ProjectInfo> updateProject(HttpServletRequest request,
@Validated @RequestBody ProjectDto.ProjectInfoDto projectInfoDto) throws Exception {
Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject());
return JsonResponse.newInstance().ok();
ProjectVo.ProjectInfo projectInfo = projectService.changeProjectInfo(currentUserId,projectInfoDto);
return JsonResponse.newInstance().ok(projectInfo);
}
}

15
tall/src/main/java/com/ccsens/tall/web/TaskController.java

@ -126,11 +126,24 @@ public class TaskController {
@ApiImplicitParam(name = "taskId", value = "任务id", required = true, paramType = "query")
})
@RequestMapping(value = "", method = RequestMethod.DELETE, produces = {"application/json;charset=UTF-8"})
public JsonResponse<TaskVo.NormalTask> deleteTask(HttpServletRequest request,
public JsonResponse deleteTask(HttpServletRequest request,
@RequestParam(required = false)Long taskId) throws Exception {
Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject());
taskDetailService.deleteTask(currentUserId,taskId);
return JsonResponse.newInstance().ok();
}
@ApiOperation(value = "修改任务信息",notes = "")
@ApiImplicitParams({
@ApiImplicitParam(name = "taskId", value = "任务id", required = true, paramType = "query")
})
@RequestMapping(value = "change", method = RequestMethod.DELETE, produces = {"application/json;charset=UTF-8"})
public JsonResponse updateTask(HttpServletRequest request,
@Validated @RequestBody TaskDto.UpdateTaskInfo updateTaskInfo) throws Exception {
Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject());
TaskVo.NormalTask taskInfo = taskDetailService.updateTaskInfo(currentUserId,updateTaskInfo);
return JsonResponse.newInstance().ok(taskInfo);
}
}

23
util/src/main/java/com/ccsens/util/CodeEnum.java

@ -34,7 +34,7 @@ public enum CodeEnum {
WBS_NOT_FIRST_ROLE(22,"系统角色名称错误",true),
WBS_REPEAT_ROLE_NAME(23,"角色名称重复",true),
WSB_NOT_MEMBER(24,"未找到对应成员,请检查成员姓名是否正确", true),
WBS_NOT_FIND_ROLE(25,"找到对应的角色,请检查对谁不可见一列的名字与格式",true),
WBS_NOT_FIND_ROLE(25,"找到对应的角色,请检查对谁不可见一列的名字与格式",true),
WBS_NOT_TASK_NAME(26,"任务名不能为空",true),
WBS_NOT_FIND_EXECUTOR_ROLE(27,"找不到负责人,请检查负责人的名称",true),
WBS_NOT_FIND_CHECKER_ROLE(28,"找不到检查人,请检查检查人的名称",true),
@ -42,25 +42,28 @@ public enum CodeEnum {
WBS_SUB_TASK_ANALYSIS(30,"无法解析此子日程表",true),
WBS_NOT_SUB_TASK(31,"找不到对应的子日程表,请检查子日程表的名字是否正确",true),
WBS_NOT_PLUGIN_SHEET(32,"未找到插件表",true),
WBS_NOT_PLUGIN(33,"找到对应的插件,请确认是否填写正确",true),
WBS_NOT_PLUGIN(33,"找到对应的插件,请确认是否填写正确",true),
PROJECT_DATE_FORMAT_ERROR(34,"输入的日期格式错误,有效日期格式 例:2019-01-01或2019-01",true),
TASK_NOT_UPLOAD_DELIVER(35,"交付物未上传,无法完成任务",true),
NOT_PROJECT(36,"找不到该项目",true),
NOT_ROLE(37,"找不到该角色",true),
NOT_DELIVER(38,"找不到对应的交付物",true),
NOT_TASK(39,"找不到对应的任务",true),
NOT_DELIVER_FILE(40,"找不到文件",true),
IS_NOT_EXECUTOR(41,"您不是该任务负责人",true),
NOT_PROJECT(36,"对不起,找不到该项目",true),
NOT_ROLE(37,"对不起,找不到该角色",true),
NOT_DELIVER(38,"对不起,找不到对应的交付物",true),
NOT_TASK(39,"对不起,找不到对应的任务",true),
NOT_DELIVER_FILE(40,"对不起,找不到文件",true),
IS_NOT_EXECUTOR(41,"对不起,您不是该任务负责人",true),
NOT_CHECKER(42,"请选择检查人",true),
SUB_TASK_IS_NOT_FINISH(43,"分组内任务未全部完成",true),
IS_NOT_CHECKER(44,"不是该交付物的检查人",true),
NOT_POWER(45,"权限不足,无法操作",true),
IS_NOT_CHECKER(44,"不是该交付物的检查人",true),
NOT_POWER(45,"对不起,您的权限不足,无法进行此操作",true),
SMS_CODE_CORRECT(46,"验证信息错误",true),
QUESTION_RULE_NOT_FOUND(47,"该评测规则未知,请联系开发人员。", true),
REPORT_DOCTOR_ERROR(48, "对不起,您没有修改报告单结果的权限。", true),
NOT_LOGIN(49, "对不起,您尚未登录或登录已失效,请重新登录。", true),
REPEAT_PROJECT_NAME(50,"项目名不能重复,请修改后重试",true),
TIME_ERROR_BEGIN(51,"时间异常,开始时间不能大于结束时间",true)
;
public CodeEnum addMsg(String msg){

2
util/src/main/java/com/ccsens/util/WebConstant.java

@ -72,7 +72,7 @@ public class WebConstant {
public static final String UPLOAD_PATH_PREVIEW ="preview";
public static final String UPLOAD_PROJECT_WBS = UPLOAD_PATH_BASE + File.separator + "project";
public static final String URL_BASE = "https://api.ccsens.com/ptpro/uploads/";
public static final String TEST_URL_BASE = "https://test.tall.wiki/pt-dev/uploads/";
public static final String TEST_URL_BASE = "https://test.tall.wiki/gateway/tall/v1.0/uploads/";
public static final Integer Expired_Verify_Code_In_Seconds = 120;
public static final Integer Exist_Verify_Code_In_Seconds = 60;

Loading…
Cancel
Save