Browse Source

1205

master
zhangye 6 years ago
parent
commit
2a4bf64443
  1. 1674
      .idea/workspace.xml
  2. 4
      tall/src/main/java/com/ccsens/tall/bean/vo/TaskVo.java
  3. 9
      tall/src/main/java/com/ccsens/tall/bean/vo/UserVo.java
  4. 1
      tall/src/main/java/com/ccsens/tall/config/SpringConfig.java
  5. 2
      tall/src/main/java/com/ccsens/tall/persist/dao/TaskDeliverDao.java
  6. 3
      tall/src/main/java/com/ccsens/tall/persist/dao/TaskDetailDao.java
  7. 20
      tall/src/main/java/com/ccsens/tall/service/ExcelService.java
  8. 4
      tall/src/main/java/com/ccsens/tall/service/ExcludeRoleService.java
  9. 2
      tall/src/main/java/com/ccsens/tall/service/IProRoleService.java
  10. 4
      tall/src/main/java/com/ccsens/tall/service/IProTaskDetailService.java
  11. 2
      tall/src/main/java/com/ccsens/tall/service/IProjectService.java
  12. 5
      tall/src/main/java/com/ccsens/tall/service/MessageService.java
  13. 4
      tall/src/main/java/com/ccsens/tall/service/ProMemberRoleService.java
  14. 42
      tall/src/main/java/com/ccsens/tall/service/ProMemberService.java
  15. 41
      tall/src/main/java/com/ccsens/tall/service/ProRoleService.java
  16. 234
      tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java
  17. 33
      tall/src/main/java/com/ccsens/tall/service/ProjectService.java
  18. 5
      tall/src/main/java/com/ccsens/tall/service/SysPluginService.java
  19. 56
      tall/src/main/java/com/ccsens/tall/service/TaskDeliverService.java
  20. 4
      tall/src/main/java/com/ccsens/tall/service/TaskMemberService.java
  21. 4
      tall/src/main/java/com/ccsens/tall/service/TaskPluginService.java
  22. 4
      tall/src/main/java/com/ccsens/tall/service/TaskSubTimeService.java
  23. 4
      tall/src/main/java/com/ccsens/tall/service/UserAttentionService.java
  24. 2
      tall/src/main/java/com/ccsens/tall/service/UserService.java
  25. 5
      tall/src/main/java/com/ccsens/tall/service/proLogService.java
  26. 31
      tall/src/main/java/com/ccsens/tall/web/DebugController.java
  27. 13
      tall/src/main/java/com/ccsens/tall/web/ProjectController.java
  28. 30
      tall/src/main/java/com/ccsens/tall/web/TaskController.java
  29. 45
      tall/src/main/java/com/ccsens/tall/web/UserController.java
  30. 13
      tall/src/main/resources/mapper_dao/DeliverDao.xml
  31. 13
      tall/src/main/resources/mapper_dao/TaskDetailDao.xml
  32. 21
      util/src/main/java/com/ccsens/util/cron/NatureToDate.java

1674
.idea/workspace.xml

File diff suppressed because it is too large

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

@ -89,6 +89,10 @@ public class TaskVo {
private Long endTime;
@ApiModelProperty("时长")
private Long duration;
@ApiModelProperty("显示的开始时间")
private String showBeginTime;
@ApiModelProperty("显示的结束时间")
private String showEndTime;
@ApiModelProperty("循环周期")
private String cycle;
@ApiModelProperty("跳转模式 -1手动,0自动,1延迟")

9
tall/src/main/java/com/ccsens/tall/bean/vo/UserVo.java

@ -56,4 +56,13 @@ public class UserVo {
@ApiModelProperty("密码")
private String password;
}
@Getter
@Setter
@ApiModel
public static class TokenToUserId{
@ApiModelProperty("用户id")
private Long id;
}
}

1
tall/src/main/java/com/ccsens/tall/config/SpringConfig.java

@ -128,6 +128,7 @@ public class SpringConfig implements WebMvcConfigurer {
.excludePathPatterns("/users/signup")
.excludePathPatterns("/users/password")
.excludePathPatterns("/users/account")
.excludePathPatterns("/users/token")
.addPathPatterns("/plugins/**")
.addPathPatterns("/delivers/**")
.addPathPatterns("/tasks/**")

2
tall/src/main/java/com/ccsens/tall/persist/dao/TaskDeliverDao.java

@ -17,4 +17,6 @@ public interface TaskDeliverDao extends ProTaskDeliverMapper{
List<DeliverVo.DeliverInfo> selectBySubTimeId(@Param("subTimeId") Long subTimeId);
List<DeliverVo.DeliverFile> selectDeliverByUserId(@Param("userId") Long userId);
void deletePostLogCheckerByPostLogId(@Param("postLogId") Long postLogId);
}

3
tall/src/main/java/com/ccsens/tall/persist/dao/TaskDetailDao.java

@ -28,5 +28,6 @@ public interface TaskDetailDao extends ProTaskDetailMapper {
Long selectSubTimeByTaskIdAndTime(@Param("detailId") Long detailId, @Param("now") Long now);
// void deleteTaskByRoleId(@Param("parentId")Long roleId);
void selectTaskByDetailId(@Param("detailId") Long detailId);
}

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

@ -28,7 +28,7 @@ import java.util.*;
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED)
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
public class ExcelService implements IExcelService {
@Autowired
private SysPluginDao sysPluginDao;
@ -214,6 +214,24 @@ public class ExcelService implements IExcelService {
proRoleService.saveProRole(creatorRole);
proRoles.add(creatorRole);
//添加关注者一级角色
ProRole attention = new ProRole();
attention.setName(WebConstant.ROLE_NAME.Attention.value);
attention.setDescription(WebConstant.ROLE_NAME.Attention.phase);
attention.setProjectId(sysProject.getId());
attention.setId(snowflake.nextId());
proRoleService.saveProRole(attention);
proRoles.add(attention);
//添加关注者角色(二级角色)
ProRole attentionRole = new ProRole();
attentionRole.setName(WebConstant.ROLE_NAME.Attention.phase);
attentionRole.setDescription(WebConstant.ROLE_NAME.Attention.value);
attentionRole.setParentId(attention.getId());
attentionRole.setProjectId(sysProject.getId());
attentionRole.setId(snowflake.nextId());
proRoleService.saveProRole(attentionRole);
proRoles.add(attentionRole);
//添加成员和奖惩干系人
memberWhitStakeholder(memberSheet, stakeholderProRole.getId(),sysProject,proMembers);

4
tall/src/main/java/com/ccsens/tall/service/ExcludeRoleService.java

@ -2,13 +2,15 @@ package com.ccsens.tall.service;
import com.ccsens.tall.bean.po.ProRoleExeclude;
import com.ccsens.tall.persist.dao.ProRoleExecludeDao;
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;
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED)
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
public class ExcludeRoleService implements IExcludeRoleService{
@Autowired
private ProRoleExecludeDao proRoleExecludeDao;

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

@ -22,5 +22,5 @@ public interface IProRoleService {
ProRole getAllMember(Long projectId);
void deleteRoleByProjectId(Long projectId);
void deleteRoleByProjectId(Long userId,Long projectId);
}

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

@ -20,5 +20,7 @@ public interface IProTaskDetailService {
TaskVo.NormalTask selectTaskByParentId(Long parentId, Long startTime, Long endTime);
void deleteTaskByRoleId(Long roleId);
void deleteTask(Long currentUserId,Long taskId);
void deleteTaskByTaskId(Long taskId);
}

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

@ -28,5 +28,5 @@ public interface IProjectService {
void deleteProject(Long currentUserId, Long projectId)throws Exception;
void copyProject(Long userId, Long projectId);
ProjectVo.ProjectInfo copyProject(Long userId, Long projectId);
}

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

@ -6,16 +6,21 @@ import com.ccsens.tall.bean.dto.message.*;
import com.ccsens.tall.bean.vo.MemberVo;
import com.ccsens.util.JacksonUtil;
import com.ccsens.util.config.RabbitMQConfig;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.AmqpTemplate;
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 java.util.ArrayList;
import java.util.List;
import static io.lettuce.core.pubsub.PubSubOutput.Type.message;
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
public class MessageService implements IMessageService{
@Autowired
private AmqpTemplate rabbitTemplate;

4
tall/src/main/java/com/ccsens/tall/service/ProMemberRoleService.java

@ -2,13 +2,15 @@ package com.ccsens.tall.service;
import com.ccsens.tall.bean.po.ProMemberRole;
import com.ccsens.tall.persist.dao.ProMemberRoleDao;
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;
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED)
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
public class ProMemberRoleService implements IProMemberRoleService{
@Autowired
private ProMemberRoleDao proMemberRoleDao;

42
tall/src/main/java/com/ccsens/tall/service/ProMemberService.java

@ -9,6 +9,7 @@ import com.ccsens.tall.persist.dao.ProMemberDao;
import com.ccsens.tall.persist.dao.ProMemberRoleDao;
import com.ccsens.tall.persist.dao.ProRoleDao;
import com.ccsens.util.WebConstant;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
@ -17,8 +18,9 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED)
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
public class ProMemberService implements IProMemberService {
@Autowired
private ProMemberDao proMemberDao;
@ -134,20 +136,30 @@ public class ProMemberService implements IProMemberService {
*/
@Override
public List<ProRole> selectRolesByUserIdAndProjectId(Long userId, Long projectId) throws Exception {
List<ProRole> roleList = new ArrayList<>();
ProMemberExample memberExample = new ProMemberExample();
memberExample.createCriteria().andUserIdEqualTo(userId).andProjectIdEqualTo(projectId);
List<ProMember> memberList = proMemberDao.selectByExample(memberExample);
if (CollectionUtil.isNotEmpty(memberList)) {
ProMember member = memberList.get(0);
ProMemberRoleExample memberRoleExample = new ProMemberRoleExample();
memberRoleExample.createCriteria().andMemberIdEqualTo(member.getId());
List<ProMemberRole> memberRoleList = proMemberRoleDao.selectByExample(memberRoleExample);
if(CollectionUtil.isNotEmpty(memberRoleList)){
for(ProMemberRole memberRole:memberRoleList){
ProRole role = proRoleDao.selectByPrimaryKey(memberRole.getRoleId());
roleList.add(role);
}
// List<ProRole> roleList = new ArrayList<>();
// ProMemberExample memberExample = new ProMemberExample();
// memberExample.createCriteria().andUserIdEqualTo(userId).andProjectIdEqualTo(projectId);
// List<ProMember> memberList = proMemberDao.selectByExample(memberExample);
// if (CollectionUtil.isNotEmpty(memberList)) {
// ProMember member = memberList.get(0);
// ProMemberRoleExample memberRoleExample = new ProMemberRoleExample();
// memberRoleExample.createCriteria().andMemberIdEqualTo(member.getId());
// List<ProMemberRole> memberRoleList = proMemberRoleDao.selectByExample(memberRoleExample);
// if(CollectionUtil.isNotEmpty(memberRoleList)){
// for(ProMemberRole memberRole:memberRoleList){
// ProRole role = proRoleDao.selectByPrimaryKey(memberRole.getRoleId());
// roleList.add(role);
// }
// }
// }
List<ProRole> roleList = proRoleDao.selectRolesByProjectIdAndUserId(projectId, userId);
if(CollectionUtil.isNotEmpty(roleList)){
ProRoleExample roleExample = new ProRoleExample();
roleExample.createCriteria().andProjectIdEqualTo(projectId)
.andNameEqualTo(WebConstant.ROLE_NAME.Attention.phase).andParentIdNotEqualTo(0L);
List<ProRole> proRoleList = proRoleDao.selectByExample(roleExample);
if(CollectionUtil.isNotEmpty(proRoleList)){
roleList.addAll(proRoleList);
}
}
return roleList;

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

@ -11,6 +11,7 @@ import com.ccsens.tall.persist.dao.ProMemberDao;
import com.ccsens.tall.persist.dao.ProMemberRoleDao;
import com.ccsens.tall.persist.dao.ProRoleDao;
import com.ccsens.util.WebConstant;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
@ -18,17 +19,16 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED)
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
public class ProRoleService implements IProRoleService {
@Autowired
private ProRoleDao proRoleDao;
@Autowired
private ProMemberDao proMemberDao;
@Autowired
private ProMemberRoleDao proMemberRoleDao;
@Autowired
private IProTaskDetailService taskDetailService;
private IProMemberService proMemberService;
@Autowired
private IUserService userService;
@ -56,7 +56,8 @@ public class ProRoleService implements IProRoleService {
//是否mine
if (CollectionUtil.isNotEmpty(memberRoleList)) {
List<ProRole> roleList = proRoleDao.selectRolesByProjectIdAndUserId(projectId, currentUserId);
//获取用户在项目中的角色
List<ProRole> roleList = proMemberService.selectRolesByUserIdAndProjectId(projectId, currentUserId);
for (ProjectVo.RoleInfo memberRole : memberRoleList) {
if (ObjectUtil.isNotNull(roleList)) {
for(ProRole role:roleList){
@ -97,22 +98,6 @@ public class ProRoleService implements IProRoleService {
}
}
// //是否mine
// if (CollectionUtil.isNotEmpty(memberRoleList)) {
// List<ProRole> roleList = proRoleDao.selectRolesByProjectIdAndUserId(projectId, currentUserId);
// for (ProjectVo.RoleInfo memberRole : memberRoleList) {
// if (ObjectUtil.isNotNull(roleList)) {
// for(ProRole role:roleList){
// if (memberRole.getId().equals(role.getId())) {
// memberRole.setMine(true);
// break;
// } else {
// memberRole.setMine(false);
// }
// }
// }
// }
// }
//奖惩干系人信息
if (CollectionUtil.isNotEmpty(memberRoleList)) {
for (ProjectVo.RoleInfo memberRole : memberRoleList) {
@ -213,20 +198,14 @@ public class ProRoleService implements IProRoleService {
//=======================================================================
/**
* 删除所有角色
* @param projectId
* 删除角色
*/
@Override
public void deleteRoleByProjectId(Long projectId) {
public void deleteRoleByProjectId(Long userId,Long roleId) {
ProRoleExample roleExample = new ProRoleExample();
roleExample.createCriteria().andProjectIdEqualTo(projectId);
roleExample.createCriteria().andProjectIdEqualTo(roleId);
List<ProRole> roleList = proRoleDao.selectByExample(roleExample);
if(CollectionUtil.isNotEmpty(roleList)){
//删除任务
for(ProRole role:roleList){
taskDetailService.deleteTaskByRoleId(role.getId());
}
}
}

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

@ -12,6 +12,7 @@ import com.ccsens.util.CodeEnum;
import com.ccsens.util.DateUtil;
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;
@ -20,8 +21,9 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.*;
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED)
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class ProTaskDetailService implements IProTaskDetailService {
@Autowired
private IProRoleService proRoleService;
@ -47,6 +49,8 @@ public class ProTaskDetailService implements IProTaskDetailService {
private ProMemberDao proMemberDao;
@Autowired
private SysProjectDao sysProjectDao;
@Autowired
private TaskPluginDao taskPluginDao;
@Override
public void saveTaskDetail(ProTaskDetail taskDetail) {
@ -56,7 +60,7 @@ public class ProTaskDetailService implements IProTaskDetailService {
@Override
public Object getTasksByRoleId(Long currentUserId, Long projectId, Long roleId, Long startTime, Long endTime, Integer process, Integer page, Integer pageSize) throws Exception {
SysProject sysProject = sysProjectDao.selectByPrimaryKey(projectId);
if(ObjectUtil.isNull(sysProject)){
if (ObjectUtil.isNull(sysProject)) {
throw new BaseException(CodeEnum.NOT_PROJECT);
}
startTime = startTime == null ? sysProject.getBeginTime() : startTime;
@ -64,22 +68,22 @@ public class ProTaskDetailService implements IProTaskDetailService {
Object obj = null;
ProRole role = proRoleDao.selectByPrimaryKey(roleId);
if(ObjectUtil.isNull(role)){
if (ObjectUtil.isNull(role)) {
throw new BaseException(CodeEnum.NOT_ROLE);
}
ProRole parentRole = proRoleDao.selectByPrimaryKey(role.getParentId());
if(ObjectUtil.isNull(parentRole)){
if (ObjectUtil.isNull(parentRole)) {
throw new BaseException(CodeEnum.NOT_ROLE);
}
if(ObjectUtil.isNotNull(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)) {
obj = getTaskInfoByProjectIdAndPM(currentUserId,projectId, startTime, endTime, process, page, pageSize);
obj = getTaskInfoByProjectIdAndPM(currentUserId, projectId, 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);
}
}else {
} else {
throw new BaseException(CodeEnum.NOT_ROLE);
}
return obj;
@ -96,46 +100,46 @@ public class ProTaskDetailService implements IProTaskDetailService {
TaskVo.NormalTask normalTask = null;
//1、查找一级任务
SysProject project = sysProjectDao.selectByPrimaryKey(projectId);
if(endTime < project.getBeginTime() || startTime > project.getEndTime()){
if (endTime < project.getBeginTime() || startTime > project.getEndTime()) {
return proTaskInfo;
}
ProTaskDetailExample proTaskDetailExample = new ProTaskDetailExample();
proTaskDetailExample.createCriteria().andProjectIdEqualTo(projectId).andLevelEqualTo((byte) 1);
List<ProTaskDetail> firstTaskDetailList = taskDetailDao.selectByExample(proTaskDetailExample);
if(CollectionUtil.isNotEmpty(firstTaskDetailList)){
if (CollectionUtil.isNotEmpty(firstTaskDetailList)) {
int sequence = 1;
for(ProTaskDetail firstTaskDetail:firstTaskDetailList){
for (ProTaskDetail firstTaskDetail : firstTaskDetailList) {
normalTask = new TaskVo.NormalTask();
BeanUtil.copyProperties(firstTaskDetail,normalTask);
BeanUtil.copyProperties(firstTaskDetail, normalTask);
normalTask.setDetailId(firstTaskDetail.getId());
normalTask.setId(null);
normalTask.setSequence(sequence);
//查找一级任务下的二级任务
List<TaskVo.NormalTask> secondNormalTaskList = taskDetailDao.selectNormalTaskListByPM(projectId,firstTaskDetail.getId(),startTime,endTime);
if(CollectionUtil.isNotEmpty(secondNormalTaskList)){
for(TaskVo.NormalTask task:secondNormalTaskList){
ProSubTimeMember subTimeMember = getProcessByUserIdAndTask(currentUserId,task.getId());
if(ObjectUtil.isNotNull(subTimeMember)){
List<TaskVo.NormalTask> secondNormalTaskList = taskDetailDao.selectNormalTaskListByPM(projectId, firstTaskDetail.getId(), startTime, endTime);
if (CollectionUtil.isNotEmpty(secondNormalTaskList)) {
for (TaskVo.NormalTask task : secondNormalTaskList) {
ProSubTimeMember subTimeMember = getProcessByUserIdAndTask(currentUserId, task.getId());
if (ObjectUtil.isNotNull(subTimeMember)) {
task.setRealEndTime(subTimeMember.getRealFinishTime());
task.setProcess(subTimeMember.getComplatedStatus());
}
}
TaskUtil.Task task = TaskUtil.splitTask(secondNormalTaskList,startTime,endTime,process);
if(CollectionUtil.isNotEmpty(task.getGlobalTask())){
for(TaskVo.NormalTask global:task.getGlobalTask()){
TaskUtil.Task task = TaskUtil.splitTask(secondNormalTaskList, startTime, endTime, process);
if (CollectionUtil.isNotEmpty(task.getGlobalTask())) {
for (TaskVo.NormalTask global : task.getGlobalTask()) {
globalTask = new TaskVo.GlobalTask();
BeanUtil.copyProperties(global,globalTask);
BeanUtil.copyProperties(global, globalTask);
globalTaskList.add(globalTask);
}
}
if(CollectionUtil.isNotEmpty(task.getCommonTask())){
if (CollectionUtil.isNotEmpty(task.getCommonTask())) {
normalTask.setSecondTasks(new ArrayList<>());
normalTask.getSecondTasks().addAll(task.getCommonTask());
}
}
// if(CollectionUtil.isNotEmpty(normalTask.getSecondTasks())) {
normalTaskList.add(normalTask);
sequence++;
normalTaskList.add(normalTask);
sequence++;
// }
}
}
@ -148,6 +152,7 @@ public class ProTaskDetailService implements IProTaskDetailService {
proTaskInfo.setNormalTaskList(normalTaskList);
return proTaskInfo;
}
/**
* 查看任务 项目成员
*/
@ -159,28 +164,28 @@ public class ProTaskDetailService implements IProTaskDetailService {
//获取“全体成员”角色
ProRole allMember = proRoleService.getAllMember(projectId);
Long allMemberId = null;
if(ObjectUtil.isNotNull(allMember)) {
if (ObjectUtil.isNotNull(allMember)) {
allMemberId = allMember.getId();
}
//查找该角色的所有任务(全体成员的任务也是这个角色的任务)
List<TaskVo.NormalTask> secondTaskVoList = taskDetailDao.selectTaskByRoleAndAllMembers(projectId, roleId, allMemberId,startTime,endTime);
if(CollectionUtil.isNotEmpty(secondTaskVoList)){
for(TaskVo.NormalTask normalTask:secondTaskVoList){
ProSubTimeMember subTimeMember = getProcessByUserIdAndTask(currentUserId,normalTask.getId());
if(ObjectUtil.isNotNull(subTimeMember)){
List<TaskVo.NormalTask> secondTaskVoList = taskDetailDao.selectTaskByRoleAndAllMembers(projectId, roleId, allMemberId, startTime, endTime);
if (CollectionUtil.isNotEmpty(secondTaskVoList)) {
for (TaskVo.NormalTask normalTask : secondTaskVoList) {
ProSubTimeMember subTimeMember = getProcessByUserIdAndTask(currentUserId, normalTask.getId());
if (ObjectUtil.isNotNull(subTimeMember)) {
normalTask.setProcess(subTimeMember.getComplatedStatus());
normalTask.setRealEndTime(subTimeMember.getRealFinishTime());
}
}
TaskUtil.Task task = TaskUtil.splitTask(secondTaskVoList,startTime,endTime,process);
if(CollectionUtil.isNotEmpty(task.getGlobalTask())){
for(TaskVo.NormalTask global:task.getGlobalTask()){
TaskUtil.Task task = TaskUtil.splitTask(secondTaskVoList, startTime, endTime, process);
if (CollectionUtil.isNotEmpty(task.getGlobalTask())) {
for (TaskVo.NormalTask global : task.getGlobalTask()) {
globalTask = new TaskVo.GlobalTask();
BeanUtil.copyProperties(global,globalTask);
BeanUtil.copyProperties(global, globalTask);
globalTaskList.add(globalTask);
}
}
if(CollectionUtil.isNotEmpty(task.getCommonTask())){
if (CollectionUtil.isNotEmpty(task.getCommonTask())) {
normalTaskList = sortTaskTime(task.getCommonTask());
}
}
@ -223,6 +228,7 @@ public class ProTaskDetailService implements IProTaskDetailService {
proTaskInfo.setNormalTaskList(theNormalTaskList);
return proTaskInfo;
}
private List<TaskVo.NormalTask> sortTaskTime(List<TaskVo.NormalTask> commonTask) {
List<TaskVo.NormalTask> normalTaskList = new ArrayList<>();
List<TaskVo.NormalTask> secondTaskVoList = null;
@ -251,8 +257,8 @@ public class ProTaskDetailService implements IProTaskDetailService {
Long endTime = timeList.get(i + 1);
for (TaskVo.NormalTask secondTaskVo : commonTask) {
if(secondTaskVo.getTimeStatus() == 1){
if(secondTaskVo.getBeginTime().longValue() == startTime.longValue()) {
if (secondTaskVo.getTimeStatus() == 1) {
if (secondTaskVo.getBeginTime().longValue() == startTime.longValue()) {
normalTask = new TaskVo.NormalTask();
BeanUtil.copyProperties(secondTaskVo, normalTask);
normalTask.setEndTime(null);
@ -262,8 +268,8 @@ public class ProTaskDetailService implements IProTaskDetailService {
}
continue;
}
if(secondTaskVo.getTimeStatus() == 2){
if(secondTaskVo.getEndTime().longValue() == endTime.longValue()) {
if (secondTaskVo.getTimeStatus() == 2) {
if (secondTaskVo.getEndTime().longValue() == endTime.longValue()) {
normalTask = new TaskVo.NormalTask();
BeanUtil.copyProperties(secondTaskVo, normalTask);
normalTask.setBeginTime(null);
@ -317,14 +323,14 @@ public class ProTaskDetailService implements IProTaskDetailService {
TaskVo.ProTaskInfoByMVP proTaskInfoByMVP = new TaskVo.ProTaskInfoByMVP();
List<TaskVo.TaskDeliverByMVP> taskDeliverByMVPList = new ArrayList<>();
TaskVo.TaskDeliverByMVP taskDeliverByMVP = null;
List<TaskVo.FirstTask> firstTasks =new ArrayList<>();
List<TaskVo.FirstTask> firstTasks = new ArrayList<>();
TaskVo.FirstTask firstProTask = null;
//查找项目下的一级任务
ProTaskDetailExample firstTaskExample = new ProTaskDetailExample();
firstTaskExample.createCriteria().andProjectIdEqualTo(projectId).andVirtualEqualTo((byte) WebConstant.TASK_VIRTUAL.Normal.value).andParentIdEqualTo(0L);
List<ProTaskDetail> firstTaskList = taskDetailDao.selectByExample(firstTaskExample);
if(CollectionUtil.isNotEmpty(firstTaskList)){
for(ProTaskDetail firstTask:firstTaskList){
if (CollectionUtil.isNotEmpty(firstTaskList)) {
for (ProTaskDetail firstTask : firstTaskList) {
taskDeliverByMVPList = new ArrayList<>();
//查找项目下所有的二级任务
ProTaskDetailExample taskExample = new ProTaskDetailExample();
@ -370,39 +376,39 @@ public class ProTaskDetailService implements IProTaskDetailService {
}
/**
*通过任务id查任务详情
* 通过任务id查任务详情
*/
@Override
public TaskVo.NormalTask getTaskInfoByTaskId(Long currentUserId, Long projectId, Long taskId) throws Exception {
ProTaskSubTime subTime = taskSubTimeDao.selectByPrimaryKey(taskId);
TaskVo.NormalTask taskDetail = null;
if(ObjectUtil.isNotNull(subTime)) {
taskDetail = taskDetailDao.selectTaskByTaskId(subTime.getId(),subTime.getTaskDetailId());
if (ObjectUtil.isNotNull(subTime)) {
taskDetail = taskDetailDao.selectTaskByTaskId(subTime.getId(), subTime.getTaskDetailId());
//修改任务的完成状态
ProSubTimeMember subTimeMember = getProcessByUserIdAndTask(currentUserId,taskDetail.getId());
if(ObjectUtil.isNotNull(subTimeMember)){
ProSubTimeMember subTimeMember = getProcessByUserIdAndTask(currentUserId, taskDetail.getId());
if (ObjectUtil.isNotNull(subTimeMember)) {
taskDetail.setProcess(subTimeMember.getComplatedStatus());
taskDetail.setRealEndTime(subTimeMember.getRealFinishTime());
}
//添加项目信息和插件信息
normalTaskAddPlugin(currentUserId,subTime.getTaskDetailId(),taskDetail);
normalTaskAddPlugin(currentUserId, subTime.getTaskDetailId(), taskDetail);
if (ObjectUtil.isNotNull(taskDetail)) {
List<TaskVo.NormalTask> groupTaskList = new ArrayList<>();
groupTaskList = taskDetailDao.selectTaskByParentId(projectId, taskDetail.getDetailId());
if (CollectionUtil.isNotEmpty(groupTaskList)) {
for(TaskVo.NormalTask groupTask:groupTaskList){
for (TaskVo.NormalTask groupTask : groupTaskList) {
//修改任务的完成状态
ProSubTimeMember proSubTimeMember = getProcessByUserIdAndTask(currentUserId,groupTask.getId());
if(ObjectUtil.isNotNull(proSubTimeMember)){
ProSubTimeMember proSubTimeMember = getProcessByUserIdAndTask(currentUserId, groupTask.getId());
if (ObjectUtil.isNotNull(proSubTimeMember)) {
groupTask.setProcess(proSubTimeMember.getComplatedStatus());
groupTask.setRealEndTime(proSubTimeMember.getRealFinishTime());
}
//添加项目信息和插件信息
normalTaskAddPlugin(currentUserId,groupTask.getDetailId(),groupTask);
normalTaskAddPlugin(currentUserId, groupTask.getDetailId(), groupTask);
//修改返回时子任务的名字(“任务名+(xx和XX)”)
ProTaskDetail proTaskDetail = taskDetailDao.selectByPrimaryKey(groupTask.getDetailId());
if(proTaskDetail.getAllMember()==0){
groupTask.setName(updateSubTaskName(groupTask.getDetailId(),groupTask.getName()));
if (proTaskDetail.getAllMember() == 0) {
groupTask.setName(updateSubTaskName(groupTask.getDetailId(), groupTask.getName()));
}
}
@ -413,37 +419,39 @@ public class ProTaskDetailService implements IProTaskDetailService {
}
return taskDetail;
}
private void normalTaskAddPlugin(Long userId,Long taskId,TaskVo.NormalTask normalTask) throws Exception {
private void normalTaskAddPlugin(Long userId, Long taskId, TaskVo.NormalTask normalTask) throws Exception {
ProTaskDetail task = taskDetailDao.selectByPrimaryKey(taskId);
//添加项目信息
SysProject project = sysProjectDao.selectByPrimaryKey(task.getProjectId());
if(ObjectUtil.isNotNull(project)){
if (ObjectUtil.isNotNull(project)) {
normalTask.setProjectId(project.getId());
normalTask.setProjectName(project.getName());
}
ProRole role = proRoleDao.selectByPrimaryKey(normalTask.getExecutorRole());
if(ObjectUtil.isNotNull(role)){
if (ObjectUtil.isNotNull(role)) {
normalTask.setExecutorRoleName(role.getName());
}
//添加插件
List<TaskVo.PluginVo> pluginVoList = pluginService.getPluginByTask(task.getId(),userId);
List<TaskVo.PluginVo> pluginVoList = pluginService.getPluginByTask(task.getId(), userId);
normalTask.setPlugins(new ArrayList<>());
normalTask.getPlugins().addAll(pluginVoList);
}
/**
* 修改返回时子任务的名字 格式任务名+xx和XX
*/
private String updateSubTaskName(Long taskId,String taskName){
private String updateSubTaskName(Long taskId, String taskName) {
String name = taskName + "(";
ProTaskMemberExample taskMemberExample = new ProTaskMemberExample();
taskMemberExample.createCriteria().andTaskDetailIdEqualTo(taskId);
List<ProTaskMember> taskMemberList = taskMemberDao.selectByExample(taskMemberExample);
if(CollectionUtil.isNotEmpty(taskMemberList)){
for(int i = 0;i < taskMemberList.size();i++){
if (CollectionUtil.isNotEmpty(taskMemberList)) {
for (int i = 0; i < taskMemberList.size(); i++) {
ProMember member = proMemberDao.selectByPrimaryKey(taskMemberList.get(i).getMemberId());
if(ObjectUtil.isNotNull(member)){
if (ObjectUtil.isNotNull(member)) {
name += member.getNickname();
if(i != taskMemberList.size()-1){
if (i != taskMemberList.size() - 1) {
name += "和";
}
}
@ -466,19 +474,19 @@ public class ProTaskDetailService implements IProTaskDetailService {
//获取日期的开始结束时间
Long startMillisTime = null;
Long endMillisTime = null;
Map<String,Long> timeMap = null;
if(StrUtil.isNotEmpty(start)){
Map<String, Long> timeMap = null;
if (StrUtil.isNotEmpty(start)) {
timeMap = DateUtil.projectFormatDateTime(start);
startMillisTime = timeMap.get("startMillisTime");
}
if(StrUtil.isNotEmpty(end)){
if (StrUtil.isNotEmpty(end)) {
timeMap = DateUtil.projectFormatDateTime(start);
endMillisTime = timeMap.get("endMillisTime");
}
//获取该用户关注的项目
List<SysProject> projectList = attentionService.findProjectIdByUserId(currentUserId);
if(CollectionUtil.isNotEmpty(projectList)){
if(StrUtil.isNotEmpty(role)) {
if (CollectionUtil.isNotEmpty(projectList)) {
if (StrUtil.isNotEmpty(role)) {
switch (role) {
case "创建者":
for (SysProject project : projectList) {
@ -503,7 +511,7 @@ public class ProTaskDetailService implements IProTaskDetailService {
default:
break;
}
}else {
} else {
for (SysProject project : projectList) {
List<TaskVo.NormalTask> taskList = getTaskInfoByProjectIdAndUserId(project, currentUserId, startMillisTime, endMillisTime);
if (CollectionUtil.isNotEmpty(taskList)) {
@ -560,36 +568,37 @@ public class ProTaskDetailService implements IProTaskDetailService {
taskCheckList.setPageInfo(pageInfo);
return taskCheckList;
}
private List<TaskVo.NormalTask> getTaskInfoByProjectIdAndUserId(SysProject project, Long userId,
Long startTime, Long endTime) throws Exception {
List<TaskVo.NormalTask> normalTaskList = new ArrayList<>();
//获取用户的角色
List<ProRole> roleList = proRoleService.getProRoleByProjectIdAndUserId(project.getId(),userId);
List<ProRole> roleList = proRoleService.getProRoleByProjectIdAndUserId(project.getId(), userId);
//获取“全体成员”角色
ProRole allMember = proRoleService.getAllMember(project.getId());
Long allMemberId = null;
if(ObjectUtil.isNotNull(allMember)) {
if (ObjectUtil.isNotNull(allMember)) {
allMemberId = allMember.getId();
}
if(CollectionUtil.isNotEmpty(roleList)) {
for(ProRole role:roleList) {
if (CollectionUtil.isNotEmpty(roleList)) {
for (ProRole role : roleList) {
SysProject sysProject = sysProjectDao.selectByPrimaryKey(role.getProjectId());
List<TaskVo.NormalTask> taskList =
taskDetailDao.selectTaskByRoleAndAllMembers(project.getId(), role.getId(), allMemberId, startTime, endTime);
if(CollectionUtil.isNotEmpty(taskList)) {
for(TaskVo.NormalTask normalTask:taskList){
if (CollectionUtil.isNotEmpty(taskList)) {
for (TaskVo.NormalTask normalTask : taskList) {
//修改任务的完成状态
ProSubTimeMember proSubTimeMember = getProcessByUserIdAndTask(userId,normalTask.getId());
if(ObjectUtil.isNotNull(proSubTimeMember)){
ProSubTimeMember proSubTimeMember = getProcessByUserIdAndTask(userId, normalTask.getId());
if (ObjectUtil.isNotNull(proSubTimeMember)) {
normalTask.setProcess(proSubTimeMember.getComplatedStatus());
normalTask.setRealEndTime(proSubTimeMember.getRealFinishTime());
}
ProRole proRole = proRoleDao.selectByPrimaryKey(normalTask.getExecutorRole());
if(ObjectUtil.isNotNull(sysProject)) {
if (ObjectUtil.isNotNull(sysProject)) {
normalTask.setProjectId(sysProject.getId());
normalTask.setProjectName(sysProject.getName());
}
if(ObjectUtil.isNotNull(proRole)){
if (ObjectUtil.isNotNull(proRole)) {
normalTask.setExecutorRoleName(proRole.getName());
}
}
@ -602,7 +611,6 @@ public class ProTaskDetailService implements IProTaskDetailService {
/**
* 项目内的任务清单
*
*/
@Override
public TaskVo.TaskCheckList selectTaskListByProject(Long projectId, Long currentUserId, Integer page, Integer pageSize,
@ -614,18 +622,18 @@ public class ProTaskDetailService implements IProTaskDetailService {
//获取日期的开始结束时间
Long startMillisTime = null;
Long endMillisTime = null;
Map<String,Long> timeMap = null;
if(StrUtil.isNotEmpty(start)){
Map<String, Long> timeMap = null;
if (StrUtil.isNotEmpty(start)) {
timeMap = DateUtil.projectFormatDateTime(start);
startMillisTime = timeMap.get("startMillisTime");
}
if(StrUtil.isNotEmpty(end)){
if (StrUtil.isNotEmpty(end)) {
timeMap = DateUtil.projectFormatDateTime(start);
endMillisTime = timeMap.get("endMillisTime");
}
//获取项目
SysProject sysProject = sysProjectDao.selectByPrimaryKey(projectId);
if(ObjectUtil.isNotNull(sysProject)) {
if (ObjectUtil.isNotNull(sysProject)) {
List<TaskVo.NormalTask> taskList = getTaskInfoByProjectIdAndUserId(sysProject, currentUserId, startMillisTime, endMillisTime);
if (CollectionUtil.isNotEmpty(taskList)) {
normalTaskList.addAll(taskList);
@ -684,7 +692,7 @@ 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);
List<TaskVo.TaskDetailByKey> taskDetailByKeyList = taskDetailDao.selectTaskByKey(currentUserId, projectId, key);
return taskDetailByKeyList;
}
@ -692,8 +700,8 @@ public class ProTaskDetailService implements IProTaskDetailService {
* 查询子任务最早的一条
*/
@Override
public TaskVo.NormalTask selectTaskByParentId(Long parentId, Long startTime, Long endTime){
TaskVo.NormalTask normalTask = taskDetailDao.selectTaskByParentIdAndTime(parentId,startTime,endTime);
public TaskVo.NormalTask selectTaskByParentId(Long parentId, Long startTime, Long endTime) {
TaskVo.NormalTask normalTask = taskDetailDao.selectTaskByParentIdAndTime(parentId, startTime, endTime);
return normalTask;
}
@ -704,17 +712,17 @@ public class ProTaskDetailService implements IProTaskDetailService {
ProSubTimeMember subTimeMember = null;
ProTaskSubTime subTime = taskSubTimeDao.selectByPrimaryKey(subTimeId);
ProTaskDetail taskDetail = taskDetailDao.selectByPrimaryKey(subTime.getTaskDetailId());
if(taskDetail.getFinishNeedAll()==0){
if (taskDetail.getFinishNeedAll() == 0) {
ProSubTimeMemberExample subTimeMemberExample = new ProSubTimeMemberExample();
subTimeMemberExample.createCriteria().andTaskSubTimeIdEqualTo(subTimeId).andComplatedStatusEqualTo(2);
subTimeMemberExample.setOrderByClause("real_finish_time DESC");
List<ProSubTimeMember> subTimeMemberList = proSubTimeMemberDao.selectByExample(subTimeMemberExample);
if(CollectionUtil.isNotEmpty(subTimeMemberList)){
if (CollectionUtil.isNotEmpty(subTimeMemberList)) {
subTimeMember = subTimeMemberList.get(0);
}
}else {
} else {
//查找此用户在任务下的成员
ProMember porMember = proMemberService.selectByUserId(userId,taskDetail.getProjectId());
ProMember porMember = proMemberService.selectByUserId(userId, taskDetail.getProjectId());
//该用户是否是任务的负责人
ProRole role = proRoleDao.selectByPrimaryKey(taskDetail.getExecutorRole());
Boolean isBelongRole = proMemberService.userIsBelongRole(userId, role.getId());
@ -726,7 +734,7 @@ public class ProTaskDetailService implements IProTaskDetailService {
if (CollectionUtil.isNotEmpty(subTimeMemberList)) {
subTimeMember = subTimeMemberList.get(0);
}
}else {
} else {
//查找任务负责人下的所有成员
List<ProMember> memberList = proMemberService.selectByRole(taskDetail.getExecutorRole());
if (CollectionUtil.isNotEmpty(memberList)) {
@ -750,19 +758,45 @@ public class ProTaskDetailService implements IProTaskDetailService {
//===================================================================
/**
* 删除角色下的所有任务相关(taskDetailtaskSubTimetaskMemberplugin)
* @param roleId
* 删除任务和所有相关信息
*/
@Override
public void deleteTaskByRoleId(Long roleId) {
// taskDetailDao.deleteTaskByRoleId(roleId);
public void deleteTask(Long currentUserId, Long taskId) {
//检查id是详情id还是subTimeId
ProTaskDetail taskDetail = null;
ProTaskSubTime subTime = taskSubTimeDao.selectByPrimaryKey(taskId);
if (ObjectUtil.isNotNull(subTime)) {
taskDetail = taskDetailDao.selectByPrimaryKey(subTime.getTaskDetailId());
} else {
taskDetail = taskDetailDao.selectByPrimaryKey(taskId);
}
//本用户在项目中的角色
List<ProRole> proRoles = proRoleService.getProRoleByProjectIdAndUserId(taskDetail.getProjectId(), currentUserId);
//用户在项目中的最高权限
int power = proRoleService.selectPowerByRoleName(proRoles);
if (power > 1) {
if (ObjectUtil.isNotNull(taskDetail)) {
deleteTaskByTaskId(taskDetail.getId());
}
} else {
throw new BaseException(CodeEnum.NOT_POWER);
}
}
/**
* 删除任务和所有相关信息
*/
private void deleteTaskById(Long taskId){
//删除交付物
@Override
public void deleteTaskByTaskId(Long taskId) {
//1、删除交付物相关信息
taskDeliverService.deleteDeliverByTaskId(taskId);
//2、删除插件
ProTaskPluginExample pluginExample = new ProTaskPluginExample();
pluginExample.createCriteria().andTaskDetailIdEqualTo(taskId);
taskPluginDao.deleteByExample(pluginExample);
//3、删除任务与成员关联表
ProTaskMemberExample taskMemberExample = new ProTaskMemberExample();
taskMemberExample.createCriteria().andTaskDetailIdEqualTo(taskId);
taskMemberDao.deleteByExample(taskMemberExample);
//4、删除任务、子任务和任务完成表
taskDetailDao.selectTaskByDetailId(taskId);
}
}

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

@ -15,6 +15,7 @@ import com.ccsens.util.cron.CronConstant;
import com.ccsens.util.cron.NatureToDate;
import com.ccsens.util.exception.BaseException;
import com.github.pagehelper.PageHelper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
@ -23,8 +24,9 @@ import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.*;
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED)
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
public class ProjectService implements IProjectService {
@Autowired
private SysProjectDao sysProjectDao;
@ -356,7 +358,6 @@ public class ProjectService implements IProjectService {
return sysProjectDao.getProjectByKey(currentUserId,key);
}
//===========================================================================
/**
* 删除项目
@ -372,16 +373,26 @@ public class ProjectService implements IProjectService {
SysProject project = sysProjectDao.selectByPrimaryKey(projectId);
project.setRecStatus((byte) 1);
sysProjectDao.updateByPrimaryKeySelective(project);
//彻底删除项目
}else {
throw new BaseException(CodeEnum.NOT_POWER);
}
}
/**
* 删除项目
*/
private void deleteProjectById(Long projectId){
}
/**
* 复制项目
*/
@Override
public void copyProject(Long userId ,Long projectId) {
public ProjectVo.ProjectInfo copyProject(Long userId ,Long projectId) {
ProjectVo.ProjectInfo projectInfo = new ProjectVo.ProjectInfo();
SysProject oldProject = sysProjectDao.selectByPrimaryKey(projectId);
SysProject newProject = new SysProject();
if(ObjectUtil.isNotNull(oldProject)){
@ -400,6 +411,18 @@ public class ProjectService implements IProjectService {
}else {
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);
}
return projectInfo;
}
/**
* 复制角色
@ -521,6 +544,10 @@ public class ProjectService implements IProjectService {
}
}
}
/**
* 根据时间分解任务
*/
private void taskToSubTime(ProTaskDetail taskDetail){
//cycle为空,只加一条数据
if(ObjectUtil.isNotNull(taskDetail)) {

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

@ -2,12 +2,17 @@ package com.ccsens.tall.service;
import com.ccsens.tall.bean.vo.PluginVo;
import com.ccsens.tall.persist.dao.SysPluginDao;
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 java.util.List;
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
public class SysPluginService implements ISysPluginService{
@Autowired
private SysPluginDao sysPluginDao;

56
tall/src/main/java/com/ccsens/tall/service/TaskDeliverService.java

@ -16,6 +16,7 @@ import com.ccsens.tall.bean.vo.TaskVo;
import com.ccsens.tall.persist.dao.*;
import com.ccsens.util.*;
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;
@ -24,8 +25,9 @@ import org.springframework.transaction.annotation.Transactional;
import java.io.File;
import java.util.*;
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED)
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
public class TaskDeliverService implements ITaskDeliverService {
@Autowired
private TaskDeliverDao taskDeliverDao;
@ -265,9 +267,6 @@ public class TaskDeliverService implements ITaskDeliverService {
/**
* 判断id是taskId还是subTimeId
*
* @param id
* @return subTimeId
*/
private Long isTaskOrSubTime(Long id) {
Long subTimeId = null;
@ -292,11 +291,6 @@ public class TaskDeliverService implements ITaskDeliverService {
/**
* 获取任务下所有交付物的信息
*
* @param currentUserId
* @param
* @return
* @throws Exception
*/
@Override
public List<DeliverVo.DeliverInfo> selectTaskDeliver(Long currentUserId, Long taskId) throws Exception {
@ -383,10 +377,6 @@ public class TaskDeliverService implements ITaskDeliverService {
/**
* 查看单个交付物的信息
*
* @param currentUserId
* @param deliverId
* @return
*/
@Override
public DeliverVo.DeliverInfo selectDeliverInfo(Long currentUserId, Long deliverId, Long taskId) throws Exception {
@ -595,15 +585,6 @@ public class TaskDeliverService implements ITaskDeliverService {
/**
* 交付物清单
*
* @param currentUserId
* @param page
* @param pageSize
* @param key
* @param start
* @param end
* @return
* @throws Exception
*/
@Override
public DeliverVo.DeliverFileList selectDeliverList(Long currentUserId, Integer page, Integer pageSize, String
@ -691,10 +672,6 @@ public class TaskDeliverService implements ITaskDeliverService {
/**
* 删除交付物修改状态变成历史项目
*
* @param currentUserId
* @param deliverId
* @param taskId
*/
@Override
public void deleteDeliver(Long currentUserId, Long deliverId, Long taskId) throws Exception {
@ -773,9 +750,34 @@ public class TaskDeliverService implements ITaskDeliverService {
}
//=========================================================
/**
* 删除任务下的交付物彻底删除
* @param taskId
*/
@Override
public void deleteDeliverByTaskId(Long taskId) {
//查找已上传的文件
//查询交付物
ProTaskDeliverExample deliverExample = new ProTaskDeliverExample();
deliverExample.createCriteria().andTaskDetailIdEqualTo(taskId);
List<ProTaskDeliver> deliverList = taskDeliverDao.selectByExample(deliverExample);
if(CollectionUtil.isNotEmpty(deliverList)){
for(ProTaskDeliver deliver : deliverList){
ProTaskDeliverPostLogExample postLogExample = new ProTaskDeliverPostLogExample();
postLogExample.createCriteria().andDeliverIdEqualTo(deliver.getId());
List<ProTaskDeliverPostLog> postLogList = deliverPostLogDao.selectByExample(postLogExample);
if(CollectionUtil.isNotEmpty(postLogList)){
for(ProTaskDeliverPostLog deliverPostLog : postLogList){
//删除文件
SysCommitedFile file = commitedFileDao.selectByPrimaryKey(deliverPostLog.getFileId());
deleteFile(file.getPath());
commitedFileDao.deleteByPrimaryKey(deliverPostLog.getId());
//删除交付物和文件、检查人的关联信息
taskDeliverDao.deletePostLogCheckerByPostLogId(deliverPostLog.getId());
}
}
}
}
}

4
tall/src/main/java/com/ccsens/tall/service/TaskMemberService.java

@ -2,13 +2,15 @@ package com.ccsens.tall.service;
import com.ccsens.tall.bean.po.ProTaskMember;
import com.ccsens.tall.persist.dao.TaskMemberDao;
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;
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED)
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
public class TaskMemberService implements ITaskMemberService{
@Autowired
private TaskMemberDao taskMemberDao;

4
tall/src/main/java/com/ccsens/tall/service/TaskPluginService.java

@ -6,6 +6,7 @@ import com.ccsens.tall.bean.vo.TaskVo;
import com.ccsens.tall.persist.dao.SysPluginDao;
import com.ccsens.tall.persist.dao.TaskDetailDao;
import com.ccsens.tall.persist.dao.TaskPluginDao;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
@ -14,8 +15,9 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED)
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
public class TaskPluginService implements ITaskPluginService{
@Autowired
private TaskPluginDao taskPluginDao;

4
tall/src/main/java/com/ccsens/tall/service/TaskSubTimeService.java

@ -15,6 +15,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.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
@ -23,8 +24,9 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED)
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
public class TaskSubTimeService implements ITaskSubTimeService {
@Autowired
private TaskSubTimeDao taskSubTimeDao;

4
tall/src/main/java/com/ccsens/tall/service/UserAttentionService.java

@ -7,6 +7,7 @@ import com.ccsens.tall.bean.po.UserAttention;
import com.ccsens.tall.bean.po.UserAttentionExample;
import com.ccsens.tall.persist.dao.SysProjectDao;
import com.ccsens.tall.persist.dao.UserAttentionDao;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
@ -15,8 +16,9 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED)
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
public class UserAttentionService implements IUserAttentionService{
@Autowired
private UserAttentionDao attentionDao;

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

@ -26,7 +26,7 @@ import java.util.Map;
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED)
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
public class UserService implements IUserService {
@Autowired
private SysUserDao userDao;

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

@ -3,10 +3,15 @@ package com.ccsens.tall.service;
import cn.hutool.core.lang.Snowflake;
import com.ccsens.tall.bean.po.ProLog;
import com.ccsens.tall.persist.dao.ProLogDao;
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;
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
public class proLogService implements IProLogService{
@Autowired
private ProLogDao proLogDao;

31
tall/src/main/java/com/ccsens/tall/web/DebugController.java

@ -0,0 +1,31 @@
package com.ccsens.tall.web;
import cn.hutool.core.collection.CollectionUtil;
import com.ccsens.util.JsonResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.util.Map;
@Api(tags = "DEBUG" , description = "DebugController | ")
@RestController
@RequestMapping("/debug")
public class DebugController {
@ApiOperation(value = "/测试",notes = "")
@ApiImplicitParams({
})
@RequestMapping(value="",method = RequestMethod.GET,produces = {"application/json;charset=UTF-8"})
public JsonResponse getSmsCode(HttpServletRequest request) throws Exception {
return JsonResponse.newInstance().ok("测试");
}
}

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

@ -196,10 +196,19 @@ public class ProjectController {
@ApiImplicitParam(name = "projectId", value = "项目id", required = true, paramType = "query")
})
@RequestMapping(value = "copy", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse addProject(HttpServletRequest request,@RequestParam(required = false) Long projectId) throws Exception {
public JsonResponse<ProjectVo.ProjectInfo> addProject(HttpServletRequest request,@RequestParam(required = false) Long projectId) throws Exception {
Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject());
ProjectVo.ProjectInfo projectInfo = projectService.copyProject(currentUserId,projectId);
return JsonResponse.newInstance().ok(projectInfo);
}
projectService.copyProject(currentUserId,projectId);
@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 {
Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject());
return JsonResponse.newInstance().ok();
}
}

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

@ -94,6 +94,19 @@ public class TaskController {
return JsonResponse.newInstance().ok(taskCheckList);
}
@ApiOperation(value = "任务模糊搜索", notes = "")
@ApiImplicitParams({
@ApiImplicitParam(name = "projectId", value = "项目id 可以为null", required = true, paramType = "query"),
@ApiImplicitParam(name = "key", value = "关键词", required = true, paramType = "query")
})
@RequestMapping(value = "key", method = RequestMethod.GET, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<TaskVo.TaskDetailByKey>> getProjectByKey(HttpServletRequest request, @RequestParam(required = false)Long projectId, String key) throws Exception {
Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject());
List<TaskVo.TaskDetailByKey> taskDetailByKeyList = taskDetailService.getTaskDetailByKey(currentUserId,projectId,key);
return JsonResponse.newInstance().ok(taskDetailByKeyList);
}
//==============================================================
@ApiOperation(value = "添加清单(任务)",notes = "")
@ -108,17 +121,16 @@ public class TaskController {
return JsonResponse.newInstance().ok(normalTask);
}
@ApiOperation(value = "任务模糊搜索", notes = "")
@ApiOperation(value = "删除任务",notes = "")
@ApiImplicitParams({
@ApiImplicitParam(name = "projectId", value = "项目id 可以为null", required = true, paramType = "query"),
@ApiImplicitParam(name = "key", value = "关键词", required = true, paramType = "query")
@ApiImplicitParam(name = "taskId", value = "任务id", required = true, paramType = "query")
})
@RequestMapping(value = "key", method = RequestMethod.GET, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<TaskVo.TaskDetailByKey>> getProjectByKey(HttpServletRequest request, @RequestParam(required = false)Long projectId, String key) throws Exception {
Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject());
List<TaskVo.TaskDetailByKey> taskDetailByKeyList = taskDetailService.getTaskDetailByKey(currentUserId,projectId,key);
return JsonResponse.newInstance().ok(taskDetailByKeyList);
@RequestMapping(value = "", method = RequestMethod.DELETE, produces = {"application/json;charset=UTF-8"})
public JsonResponse<TaskVo.NormalTask> 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();
}
}

45
tall/src/main/java/com/ccsens/tall/web/UserController.java

@ -9,12 +9,12 @@ import com.ccsens.tall.bean.vo.UserVo;
import com.ccsens.tall.exception.UserLoginException;
import com.ccsens.tall.service.IUserService;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.JwtUtil;
import com.ccsens.util.WebConstant;
import io.jsonwebtoken.Claims;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.jsonwebtoken.ExpiredJwtException;
import io.jsonwebtoken.SignatureException;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@ -30,12 +30,7 @@ import java.util.Map;
public class UserController {
@Autowired
private IUserService userService;
// @Autowired
// private IProjectService projectService;
// @Autowired
// private ITaskService taskService;
// @Autowired
// private IDeliverService deliverService;
@ApiOperation(value = "/用户登录", notes = "")
@ApiImplicitParams({
@ -101,9 +96,6 @@ public class UserController {
} else {
return JsonResponse.newInstance().fail("登陆信息不正确.");
}
// UserVo.TokenBean tokenBean = userService.userManageSignin(dto);
// return JsonResponse.newInstance().ok(tokenBean);
}
@ApiOperation(value = "/发送验证码", notes = "")
@ -197,6 +189,33 @@ public class UserController {
return JsonResponse.newInstance().ok();
}
@ApiOperation(value = "根据token获取userId",notes = "")
@ApiImplicitParams({
@ApiImplicitParam(name="token",value = "token",required = true,paramType = "query")
})
@RequestMapping(value = "token",method = RequestMethod.GET,produces = {"application/json;charset=UTF-8"})
public JsonResponse<UserVo.TokenToUserId> getNodeMessage(HttpServletRequest request, @RequestParam(required = true) String token) throws Exception {
//验证token是否有效
UserVo.TokenToUserId tokenToUserId = new UserVo.TokenToUserId();
Claims claims = null;
boolean flag = false;
if (token != null) {
try {
claims = JwtUtil.parseJWT(token, WebConstant.JWT_ACCESS_TOKEN_SECERT);
flag = true;
}catch(SignatureException e){
flag = false;
}catch(ExpiredJwtException e){
flag = false;
}catch(Exception e){
flag = false;
}
}
if(flag){
tokenToUserId.setId(Long.valueOf(claims.getSubject()));
}
return JsonResponse.newInstance().ok(tokenToUserId);
}
}

13
tall/src/main/resources/mapper_dao/DeliverDao.xml

@ -154,4 +154,17 @@
deliver_id = #{deliverId}
group by checker_id
</select>
<!--===============================================-->
<delete id="deletePostLogCheckerByPostLogId" parameterType="java.util.Map">
DELETE
p,
pc
FROM
t_pro_task_deliver_post_log p join t_pro_task_deliver_post_log_checker pc
ON p.id = pc.deliver_post_log_id
WHERE
p.id = #{postLogId}
</delete>
</mapper>

13
tall/src/main/resources/mapper_dao/TaskDetailDao.xml

@ -249,5 +249,18 @@
ORDER BY s.begin_time DESC
limit 0,1
</select>
<!--==================================-->
<delete id="selectTaskByDetailId" parameterType="java.util.Map">
DELETE
d,
s,
sm
FROM
t_pro_task_detail d LEFT JOIN
t_pro_task_sub_time s ON s.task_detail_id = d.id LEFT JOIN
t_pro_sub_time_member sm ON sm.task_sub_time_id = s.id
WHERE
d.id = #{detailId}
</delete>
</mapper>

21
util/src/main/java/com/ccsens/util/cron/NatureToDate.java

@ -21,14 +21,14 @@ public class NatureToDate {
Date start = sdf.parse("2019-11-1 8:00:00");
Date end = sdf.parse("2019-11-30 8:00:00");
System.out.println("每周一:" + generateDates("每周一", start, end));
System.out.println("每周二:" + generateDates("每周二", start, end));
System.out.println("每周三:" + generateDates("每周三", start, end));
System.out.println("每周四:" + generateDates("每周四", start, end));
System.out.println("每周五:" + generateDates("每周五", start, end));
System.out.println("每周六:" + generateDates("每周六", start, end));
System.out.println("每周天:" + generateDates("每周天", start, end));
System.out.println("每周日:" + generateDates("每周日", start, end));
// System.out.println("每周一:" + generateDates("每周一", start, end));
// System.out.println("每周二:" + generateDates("每周二", start, end));
// System.out.println("每周三:" + generateDates("每周三", start, end));
// System.out.println("每周四:" + generateDates("每周四", start, end));
// System.out.println("每周五:" + generateDates("每周五", start, end));
// System.out.println("每周六:" + generateDates("每周六", start, end));
// System.out.println("每周天:" + generateDates("每周天", start, end));
// System.out.println("每周日:" + generateDates("每周日", start, end));
// System.out.println("每月15号:" + generateDates("每月15号", start, end));
// System.out.println("每月31号:" + generateDates("每月31号", start, end));
// System.out.println("每天:" + generateDates("每天", start, end));
@ -40,7 +40,7 @@ public class NatureToDate {
// System.out.println("入职第一月:" + generateDates("入职第一月", start, end));
// System.out.println("入职第一年:" + generateDates("入职第一年", start, end));
// System.out.println("第八天:" + generateDates("第八天", start, end));
System.out.println("每周四下午三点:" + generateDates("每周四下午三点", start, end));
System.out.println("每月15号下午5点:" + generateDates("每月15号下午5点", start, end));
}
@ -297,7 +297,8 @@ public class NatureToDate {
} else {
String hourStr = nature.substring(start+2, end);
int hour = StringUtil.isMatch(hourStr, StringUtil.NUMBER) ? Integer.parseInt(hourStr) + 12 : NatureLanguage.count(hourStr) + 12;
nature = nature.replace(hourStr, hour + "");
// nature = nature.replace(hourStr, hour + "");
nature = nature.substring(0, start+2) + nature.substring(start+2, end).replace(hourStr, hour + "") + nature.substring(end);
}
}
return nature;

Loading…
Cancel
Save