diff --git a/.idea/workspace.xml b/.idea/workspace.xml index e0dde668..100505e5 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,586 +2,445 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + taskMemberExample + selectSecondRolesByProjectId + selectRolesByProjectIdAndUserId + + + + + + + + + + + + true + DEFINITION_ORDER + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - + + + + + + + - + + + + - + + + + - - + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - 1575453955595 + + 1575429210394 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + file://$PROJECT_DIR$/tall/src/main/java/com/ccsens/tall/service/ProjectService.java + 134 + + + + file://$PROJECT_DIR$/tall/src/main/java/com/ccsens/tall/service/ProjectService.java + 552 + + + + file://$PROJECT_DIR$/util/src/main/java/com/ccsens/util/cron/NatureToDate.java + 61 + + + + file://$PROJECT_DIR$/tall/src/main/java/com/ccsens/tall/web/TaskController.java + 131 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tall/src/main/java/com/ccsens/tall/bean/vo/TaskVo.java b/tall/src/main/java/com/ccsens/tall/bean/vo/TaskVo.java index e35d85de..e70b40a8 100644 --- a/tall/src/main/java/com/ccsens/tall/bean/vo/TaskVo.java +++ b/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延迟") diff --git a/tall/src/main/java/com/ccsens/tall/bean/vo/UserVo.java b/tall/src/main/java/com/ccsens/tall/bean/vo/UserVo.java index b9c5a503..d8212a48 100644 --- a/tall/src/main/java/com/ccsens/tall/bean/vo/UserVo.java +++ b/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; + } + } diff --git a/tall/src/main/java/com/ccsens/tall/config/SpringConfig.java b/tall/src/main/java/com/ccsens/tall/config/SpringConfig.java index e961e6b4..b52fd039 100644 --- a/tall/src/main/java/com/ccsens/tall/config/SpringConfig.java +++ b/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/**") diff --git a/tall/src/main/java/com/ccsens/tall/persist/dao/TaskDeliverDao.java b/tall/src/main/java/com/ccsens/tall/persist/dao/TaskDeliverDao.java index 10169c74..908e9c76 100644 --- a/tall/src/main/java/com/ccsens/tall/persist/dao/TaskDeliverDao.java +++ b/tall/src/main/java/com/ccsens/tall/persist/dao/TaskDeliverDao.java @@ -17,4 +17,6 @@ public interface TaskDeliverDao extends ProTaskDeliverMapper{ List selectBySubTimeId(@Param("subTimeId") Long subTimeId); List selectDeliverByUserId(@Param("userId") Long userId); + + void deletePostLogCheckerByPostLogId(@Param("postLogId") Long postLogId); } diff --git a/tall/src/main/java/com/ccsens/tall/persist/dao/TaskDetailDao.java b/tall/src/main/java/com/ccsens/tall/persist/dao/TaskDetailDao.java index ab8d64d9..b34d193a 100644 --- a/tall/src/main/java/com/ccsens/tall/persist/dao/TaskDetailDao.java +++ b/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); + } diff --git a/tall/src/main/java/com/ccsens/tall/service/ExcelService.java b/tall/src/main/java/com/ccsens/tall/service/ExcelService.java index 737db465..d8d9523e 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ExcelService.java +++ b/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); diff --git a/tall/src/main/java/com/ccsens/tall/service/ExcludeRoleService.java b/tall/src/main/java/com/ccsens/tall/service/ExcludeRoleService.java index cfda94b1..6d3f918b 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ExcludeRoleService.java +++ b/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; diff --git a/tall/src/main/java/com/ccsens/tall/service/IProRoleService.java b/tall/src/main/java/com/ccsens/tall/service/IProRoleService.java index ac146ebd..ac300a81 100644 --- a/tall/src/main/java/com/ccsens/tall/service/IProRoleService.java +++ b/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); } diff --git a/tall/src/main/java/com/ccsens/tall/service/IProTaskDetailService.java b/tall/src/main/java/com/ccsens/tall/service/IProTaskDetailService.java index 26e64cdc..7082e504 100644 --- a/tall/src/main/java/com/ccsens/tall/service/IProTaskDetailService.java +++ b/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); } diff --git a/tall/src/main/java/com/ccsens/tall/service/IProjectService.java b/tall/src/main/java/com/ccsens/tall/service/IProjectService.java index 6112d265..54b44ed0 100644 --- a/tall/src/main/java/com/ccsens/tall/service/IProjectService.java +++ b/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); } diff --git a/tall/src/main/java/com/ccsens/tall/service/MessageService.java b/tall/src/main/java/com/ccsens/tall/service/MessageService.java index 1b1d57c1..0129e9a7 100644 --- a/tall/src/main/java/com/ccsens/tall/service/MessageService.java +++ b/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; diff --git a/tall/src/main/java/com/ccsens/tall/service/ProMemberRoleService.java b/tall/src/main/java/com/ccsens/tall/service/ProMemberRoleService.java index 86c66d29..69df6bb5 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ProMemberRoleService.java +++ b/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; diff --git a/tall/src/main/java/com/ccsens/tall/service/ProMemberService.java b/tall/src/main/java/com/ccsens/tall/service/ProMemberService.java index 43d77ff0..78064e4b 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ProMemberService.java +++ b/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 selectRolesByUserIdAndProjectId(Long userId, Long projectId) throws Exception { - List roleList = new ArrayList<>(); - ProMemberExample memberExample = new ProMemberExample(); - memberExample.createCriteria().andUserIdEqualTo(userId).andProjectIdEqualTo(projectId); - List memberList = proMemberDao.selectByExample(memberExample); - if (CollectionUtil.isNotEmpty(memberList)) { - ProMember member = memberList.get(0); - ProMemberRoleExample memberRoleExample = new ProMemberRoleExample(); - memberRoleExample.createCriteria().andMemberIdEqualTo(member.getId()); - List memberRoleList = proMemberRoleDao.selectByExample(memberRoleExample); - if(CollectionUtil.isNotEmpty(memberRoleList)){ - for(ProMemberRole memberRole:memberRoleList){ - ProRole role = proRoleDao.selectByPrimaryKey(memberRole.getRoleId()); - roleList.add(role); - } +// List roleList = new ArrayList<>(); +// ProMemberExample memberExample = new ProMemberExample(); +// memberExample.createCriteria().andUserIdEqualTo(userId).andProjectIdEqualTo(projectId); +// List memberList = proMemberDao.selectByExample(memberExample); +// if (CollectionUtil.isNotEmpty(memberList)) { +// ProMember member = memberList.get(0); +// ProMemberRoleExample memberRoleExample = new ProMemberRoleExample(); +// memberRoleExample.createCriteria().andMemberIdEqualTo(member.getId()); +// List memberRoleList = proMemberRoleDao.selectByExample(memberRoleExample); +// if(CollectionUtil.isNotEmpty(memberRoleList)){ +// for(ProMemberRole memberRole:memberRoleList){ +// ProRole role = proRoleDao.selectByPrimaryKey(memberRole.getRoleId()); +// roleList.add(role); +// } +// } +// } + List 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 proRoleList = proRoleDao.selectByExample(roleExample); + if(CollectionUtil.isNotEmpty(proRoleList)){ + roleList.addAll(proRoleList); } } return roleList; diff --git a/tall/src/main/java/com/ccsens/tall/service/ProRoleService.java b/tall/src/main/java/com/ccsens/tall/service/ProRoleService.java index 60ed5561..28f3af38 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ProRoleService.java +++ b/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 roleList = proRoleDao.selectRolesByProjectIdAndUserId(projectId, currentUserId); + //获取用户在项目中的角色 + List 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 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 roleList = proRoleDao.selectByExample(roleExample); - if(CollectionUtil.isNotEmpty(roleList)){ - //删除任务 - for(ProRole role:roleList){ - taskDetailService.deleteTaskByRoleId(role.getId()); - } - } + } diff --git a/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java b/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java index 54269222..8e7379c4 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java +++ b/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 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 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 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 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 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 sortTaskTime(List commonTask) { List normalTaskList = new ArrayList<>(); List 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 taskDeliverByMVPList = new ArrayList<>(); TaskVo.TaskDeliverByMVP taskDeliverByMVP = null; - List firstTasks =new ArrayList<>(); + List 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 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 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 pluginVoList = pluginService.getPluginByTask(task.getId(),userId); + List 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 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 timeMap = null; - if(StrUtil.isNotEmpty(start)){ + Map 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 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 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 getTaskInfoByProjectIdAndUserId(SysProject project, Long userId, Long startTime, Long endTime) throws Exception { List normalTaskList = new ArrayList<>(); //获取用户的角色 - List roleList = proRoleService.getProRoleByProjectIdAndUserId(project.getId(),userId); + List 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 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 timeMap = null; - if(StrUtil.isNotEmpty(start)){ + Map 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 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 getTaskDetailByKey(Long currentUserId, Long projectId, String key) { - List taskDetailByKeyList = taskDetailDao.selectTaskByKey(currentUserId,projectId,key); + List 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 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 memberList = proMemberService.selectByRole(taskDetail.getExecutorRole()); if (CollectionUtil.isNotEmpty(memberList)) { @@ -750,19 +758,45 @@ public class ProTaskDetailService implements IProTaskDetailService { //=================================================================== /** - * 删除角色下的所有任务相关(taskDetail,taskSubTime,taskMember,plugin) - * @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 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); } + } diff --git a/tall/src/main/java/com/ccsens/tall/service/ProjectService.java b/tall/src/main/java/com/ccsens/tall/service/ProjectService.java index 4d102da4..09da1fe2 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ProjectService.java +++ b/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)) { diff --git a/tall/src/main/java/com/ccsens/tall/service/SysPluginService.java b/tall/src/main/java/com/ccsens/tall/service/SysPluginService.java index e9c508ec..64fcb9d2 100644 --- a/tall/src/main/java/com/ccsens/tall/service/SysPluginService.java +++ b/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; diff --git a/tall/src/main/java/com/ccsens/tall/service/TaskDeliverService.java b/tall/src/main/java/com/ccsens/tall/service/TaskDeliverService.java index 99fbf51b..63d3b193 100644 --- a/tall/src/main/java/com/ccsens/tall/service/TaskDeliverService.java +++ b/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 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 deliverList = taskDeliverDao.selectByExample(deliverExample); + if(CollectionUtil.isNotEmpty(deliverList)){ + for(ProTaskDeliver deliver : deliverList){ + ProTaskDeliverPostLogExample postLogExample = new ProTaskDeliverPostLogExample(); + postLogExample.createCriteria().andDeliverIdEqualTo(deliver.getId()); + List 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()); + } + } + } + } } diff --git a/tall/src/main/java/com/ccsens/tall/service/TaskMemberService.java b/tall/src/main/java/com/ccsens/tall/service/TaskMemberService.java index 7a0ea503..3355f9a2 100644 --- a/tall/src/main/java/com/ccsens/tall/service/TaskMemberService.java +++ b/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; diff --git a/tall/src/main/java/com/ccsens/tall/service/TaskPluginService.java b/tall/src/main/java/com/ccsens/tall/service/TaskPluginService.java index 6feb06af..4a61d34c 100644 --- a/tall/src/main/java/com/ccsens/tall/service/TaskPluginService.java +++ b/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; diff --git a/tall/src/main/java/com/ccsens/tall/service/TaskSubTimeService.java b/tall/src/main/java/com/ccsens/tall/service/TaskSubTimeService.java index 0166957e..06a07319 100644 --- a/tall/src/main/java/com/ccsens/tall/service/TaskSubTimeService.java +++ b/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; diff --git a/tall/src/main/java/com/ccsens/tall/service/UserAttentionService.java b/tall/src/main/java/com/ccsens/tall/service/UserAttentionService.java index a16230bb..abb24637 100644 --- a/tall/src/main/java/com/ccsens/tall/service/UserAttentionService.java +++ b/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; diff --git a/tall/src/main/java/com/ccsens/tall/service/UserService.java b/tall/src/main/java/com/ccsens/tall/service/UserService.java index 2f249e26..0358237e 100644 --- a/tall/src/main/java/com/ccsens/tall/service/UserService.java +++ b/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; diff --git a/tall/src/main/java/com/ccsens/tall/service/proLogService.java b/tall/src/main/java/com/ccsens/tall/service/proLogService.java index e9dd9e3a..88674ef3 100644 --- a/tall/src/main/java/com/ccsens/tall/service/proLogService.java +++ b/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; diff --git a/tall/src/main/java/com/ccsens/tall/web/DebugController.java b/tall/src/main/java/com/ccsens/tall/web/DebugController.java new file mode 100644 index 00000000..408e78c6 --- /dev/null +++ b/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("测试"); + } + + + +} diff --git a/tall/src/main/java/com/ccsens/tall/web/ProjectController.java b/tall/src/main/java/com/ccsens/tall/web/ProjectController.java index 7162ee8a..94c72916 100644 --- a/tall/src/main/java/com/ccsens/tall/web/ProjectController.java +++ b/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 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 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(); } } diff --git a/tall/src/main/java/com/ccsens/tall/web/TaskController.java b/tall/src/main/java/com/ccsens/tall/web/TaskController.java index 2e9e2754..b0084d93 100644 --- a/tall/src/main/java/com/ccsens/tall/web/TaskController.java +++ b/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> 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 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> 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 taskDetailByKeyList = taskDetailService.getTaskDetailByKey(currentUserId,projectId,key); - return JsonResponse.newInstance().ok(taskDetailByKeyList); + @RequestMapping(value = "", method = RequestMethod.DELETE, produces = {"application/json;charset=UTF-8"}) + 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(); } } diff --git a/tall/src/main/java/com/ccsens/tall/web/UserController.java b/tall/src/main/java/com/ccsens/tall/web/UserController.java index 2bc638b4..88d432a0 100644 --- a/tall/src/main/java/com/ccsens/tall/web/UserController.java +++ b/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 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); + } } diff --git a/tall/src/main/resources/mapper_dao/DeliverDao.xml b/tall/src/main/resources/mapper_dao/DeliverDao.xml index 33312cef..c63c4299 100644 --- a/tall/src/main/resources/mapper_dao/DeliverDao.xml +++ b/tall/src/main/resources/mapper_dao/DeliverDao.xml @@ -154,4 +154,17 @@ deliver_id = #{deliverId} group by checker_id + + + + + 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} + \ No newline at end of file diff --git a/tall/src/main/resources/mapper_dao/TaskDetailDao.xml b/tall/src/main/resources/mapper_dao/TaskDetailDao.xml index 102df3e1..785f74e7 100644 --- a/tall/src/main/resources/mapper_dao/TaskDetailDao.xml +++ b/tall/src/main/resources/mapper_dao/TaskDetailDao.xml @@ -249,5 +249,18 @@ ORDER BY s.begin_time DESC limit 0,1 + + + 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} + \ No newline at end of file diff --git a/util/src/main/java/com/ccsens/util/cron/NatureToDate.java b/util/src/main/java/com/ccsens/util/cron/NatureToDate.java index 43797c6b..bf7b6aa5 100644 --- a/util/src/main/java/com/ccsens/util/cron/NatureToDate.java +++ b/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;