diff --git a/tall/src/main/java/com/ccsens/tall/bean/dto/TaskDto.java b/tall/src/main/java/com/ccsens/tall/bean/dto/TaskDto.java index 13ee79c4..7b35bd5a 100644 --- a/tall/src/main/java/com/ccsens/tall/bean/dto/TaskDto.java +++ b/tall/src/main/java/com/ccsens/tall/bean/dto/TaskDto.java @@ -180,8 +180,10 @@ public class TaskDto { @ApiModel("修改看板信息") @Data public static class ChangeKanbanTask { + @NotNull(message = "任务id不能为空") @ApiModelProperty("任务id") private Long id; + @NotNull(message = "状态不能为空") @ApiModelProperty("任务状态 0未完成 1进行中 2已完成") private Integer type; } diff --git a/tall/src/main/java/com/ccsens/tall/persist/dao/TaskSubTimeDao.java b/tall/src/main/java/com/ccsens/tall/persist/dao/TaskSubTimeDao.java index 405a4c8d..84716763 100644 --- a/tall/src/main/java/com/ccsens/tall/persist/dao/TaskSubTimeDao.java +++ b/tall/src/main/java/com/ccsens/tall/persist/dao/TaskSubTimeDao.java @@ -1,6 +1,7 @@ package com.ccsens.tall.persist.dao; import com.ccsens.tall.bean.po.ProTaskSubTime; +import com.ccsens.tall.bean.vo.TaskVo; import com.ccsens.tall.persist.mapper.ProTaskSubTimeMapper; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; @@ -12,4 +13,6 @@ public interface TaskSubTimeDao extends ProTaskSubTimeMapper{ List getUnderwayTaskByRoleId(@Param("subTaskId") Long subTaskId, @Param("roleId") Long roleId); void clearTaskRealTime(@Param("projectId")Long projectId); + + List getKanbanTake(@Param("projectId")Long projectId, @Param("roleId")Long roleId,@Param("type") Integer type,@Param("memberId")Long memberId); } diff --git a/tall/src/main/java/com/ccsens/tall/service/ITaskSubTimeService.java b/tall/src/main/java/com/ccsens/tall/service/ITaskSubTimeService.java index c0c4df6f..e58a29a9 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ITaskSubTimeService.java +++ b/tall/src/main/java/com/ccsens/tall/service/ITaskSubTimeService.java @@ -3,6 +3,7 @@ package com.ccsens.tall.service; import com.ccsens.tall.bean.dto.TaskDto; import com.ccsens.tall.bean.po.ProTaskSubTime; import com.ccsens.tall.bean.vo.TaskVo; +import com.github.pagehelper.PageInfo; import java.util.List; @@ -17,7 +18,7 @@ public interface ITaskSubTimeService { void clearTaskRealTime(Long projectId); - List getKanbanTake(Long currentUserId, Long projectId, Long roleId, Integer type, Integer page, Integer pageSize); + PageInfo getKanbanTake(Long currentUserId, Long projectId, Long roleId, Integer type, Integer page, Integer pageSize) throws Exception; - void changeKanbanTake(Long currentUserId, TaskDto.ChangeKanbanTask changeKanbanTask); + void changeKanbanTake(Long currentUserId, TaskDto.ChangeKanbanTask changeKanbanTask) throws Exception; } 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 30567146..4acc4cdb 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java +++ b/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java @@ -188,7 +188,7 @@ public class ProTaskDetailService implements IProTaskDetailService { //处理插件 managePlugin(currentUserId,roleId,task); //二级任务完成状态 - if(task.getProcess() == 0) { + if(task.getProcess() != 2) { ProSubTimeMember subTimeMember = getProcessByUserIdAndTask(currentUserId, task.getId()); if (ObjectUtil.isNotNull(subTimeMember)) { task.setRealEndTime(subTimeMember.getRealFinishTime()); @@ -258,7 +258,7 @@ public class ProTaskDetailService implements IProTaskDetailService { //处理插件 managePlugin(currentUserId,roleId,normalTask); //任务完成状态 - if(normalTask.getProcess() == 0) { + if(normalTask.getProcess() != 2) { ProSubTimeMember subTimeMember = getProcessByUserIdAndTask(currentUserId, normalTask.getId()); if (ObjectUtil.isNotNull(subTimeMember)) { normalTask.setProcess(subTimeMember.getComplatedStatus()); @@ -757,7 +757,7 @@ public class ProTaskDetailService implements IProTaskDetailService { if (CollectionUtil.isNotEmpty(taskList)) { for (TaskVo.NormalTask normalTask : taskList) { //任务的完成状态 - if(normalTask.getProcess() == 0) { + if(normalTask.getProcess() != 2) { ProSubTimeMember proSubTimeMember = getProcessByUserIdAndTask(userId, normalTask.getId()); if (ObjectUtil.isNotNull(proSubTimeMember)) { normalTask.setProcess(proSubTimeMember.getComplatedStatus()); @@ -963,51 +963,6 @@ public class ProTaskDetailService implements IProTaskDetailService { } } } -// if (taskDetail.getFinishNeedAll() == 0) { -//// ProSubTimeMemberExample subTimeMemberExample = new ProSubTimeMemberExample(); -//// subTimeMemberExample.createCriteria().andTaskSubTimeIdEqualTo(subTimeId).andComplatedStatusEqualTo((byte) 2); -//// subTimeMemberExample.setOrderByClause("real_finish_time DESC"); -//// List subTimeMemberList = proSubTimeMemberDao.selectByExample(subTimeMemberExample); -//// if (CollectionUtil.isNotEmpty(subTimeMemberList)) { -//// subTimeMember = subTimeMemberList.get(0); -//// } -// } else { -//// //查找此用户在任务下的成员 -//// ProMember porMember = proMemberService.selectByUserId(userId, taskDetail.getProjectId()); -//// //该用户是否是任务的负责人 -//// ProRole role = proRoleDao.selectByPrimaryKey(taskDetail.getExecutorRole()); -//// Boolean isBelongRole = proMemberService.userIsBelongRole(userId, role.getId()); -//// if (role.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.AllMember.phase) || isBelongRole) { -//// ProSubTimeMemberExample subTimeMemberExample = new ProSubTimeMemberExample(); -//// subTimeMemberExample.createCriteria().andTaskSubTimeIdEqualTo(subTimeId) -//// .andMemberIdEqualTo(porMember.getId()).andComplatedStatusEqualTo((byte) 2); -//// List subTimeMemberList = proSubTimeMemberDao.selectByExample(subTimeMemberExample); -//// if (CollectionUtil.isNotEmpty(subTimeMemberList)) { -//// subTimeMember = subTimeMemberList.get(0); -//// } -// } else { -// //查找任务负责人下的所有成员 -// List memberList = proMemberService.selectByRole(taskDetail.getExecutorRole()); -// -// if (CollectionUtil.isNotEmpty(memberList)) { -// boolean flag = false; -// for (ProMember member : memberList) { -// ProSubTimeMemberExample subTimeMemberExample = new ProSubTimeMemberExample(); -// subTimeMemberExample.createCriteria().andTaskSubTimeIdEqualTo(subTimeId) -// .andMemberIdEqualTo(member.getId()).andComplatedStatusEqualTo((byte) 2); -// subTimeMemberExample.setOrderByClause("real_finish_time"); -// List subTimeMemberList = proSubTimeMemberDao.selectByExample(subTimeMemberExample); -// if (CollectionUtil.isEmpty(subTimeMemberList)) { -// flag = true; -// break; -// } -// subTimeMember = subTimeMemberList.get(0); -// } -// if(flag){ -// subTimeMember = null; -// } -// } -// } return subTimeMember; } 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 05524957..9199254e 100644 --- a/tall/src/main/java/com/ccsens/tall/service/TaskSubTimeService.java +++ b/tall/src/main/java/com/ccsens/tall/service/TaskSubTimeService.java @@ -17,6 +17,8 @@ import com.ccsens.util.WebConstant; import com.ccsens.util.cron.CronConstant; import com.ccsens.util.cron.NatureToDate; import com.ccsens.util.exception.BaseException; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -42,8 +44,6 @@ public class TaskSubTimeService implements ITaskSubTimeService { @Autowired private ProSubTimeMemberDao proSubTimeMemberDao; @Autowired - private IUserService userService; - @Autowired private ProTaskDeliverPostLogDao proTaskDeliverPostLogDao; @Autowired private TaskDetailDao taskDetailDao; @@ -54,8 +54,6 @@ public class TaskSubTimeService implements ITaskSubTimeService { @Autowired private IProMemberService proMemberService; @Autowired - private IProRoleService proRoleService; - @Autowired private IProTaskDetailService taskDetailService; @Autowired private IMessageService messageService; @@ -74,13 +72,15 @@ public class TaskSubTimeService implements ITaskSubTimeService { /** * 完成任务 * - * @param currentUserId - * @param subTimeId - * @throws Exception + * @param currentUserId userId + * @param subTimeId 任务日期id + * @throws Exception 任务详情 */ @Override public TaskVo.NormalTask finishTask(Long currentUserId, TaskDto.TaskSubTimeId subTimeId) throws Exception { int completedStatus = subTimeId.getCompletedStatus() == null ? 2 : subTimeId.getCompletedStatus(); + //获取当前时间 + Long now = System.currentTimeMillis(); //查找taskSubTime ProTaskSubTime taskSubTime = taskSubTimeDao.selectByPrimaryKey(subTimeId.getId()); if (ObjectUtil.isNull(taskSubTime)) { @@ -146,96 +146,36 @@ public class TaskSubTimeService implements ITaskSubTimeService { subTimeMember.setComplatedStatus((byte) completedStatus); subTimeMember.setMemberId(member.getId()); subTimeMember.setTaskSubTimeId(subTimeId.getId()); - subTimeMember.setRealFinishTime(System.currentTimeMillis()); + subTimeMember.setRealFinishTime(now); proSubTimeMemberDao.insertSelective(subTimeMember); } else { subTimeMember.setComplatedStatus((byte) completedStatus); - subTimeMember.setRealFinishTime(System.currentTimeMillis()); + subTimeMember.setRealFinishTime(now); proSubTimeMemberDao.updateByPrimaryKeySelective(subTimeMember); } - }else { + //不需要全部成员点完成,直接修改任务状态 + if(taskDetail.getFinishNeedAll() == 0){ + taskSubTime.setRealEndTime(now); + taskSubTime.setComplatedStatus(subTimeId.getCompletedStatus()); + taskSubTimeDao.updateByPrimaryKeySelective(taskSubTime); + } + } else { ProSubTimeMember proSubTimeMember = new ProSubTimeMember(); proSubTimeMember.setRecStatus((byte) 2); ProSubTimeMemberExample subTimeMemberExample = new ProSubTimeMemberExample(); - if(taskDetail.getFinishNeedAll()==0){ + if (taskDetail.getFinishNeedAll() == 0) { subTimeMemberExample.createCriteria().andTaskSubTimeIdEqualTo(subTimeId.getId()); - }else { + } else { subTimeMemberExample.createCriteria().andTaskSubTimeIdEqualTo(subTimeId.getId()).andMemberIdEqualTo(member.getId()); } - proSubTimeMemberDao.updateByExampleSelective(proSubTimeMember,subTimeMemberExample); - } - //修改任务状态 -// ProSubTimeMember sTimeMember = taskDetailService.getProcessByUserIdAndTask(currentUserId, taskSubTime.getId()); -// if (ObjectUtil.isNotNull(sTimeMember)) { + proSubTimeMemberDao.updateByExampleSelective(proSubTimeMember, subTimeMemberExample); + //修改任务状态,删除完成时间 + taskSubTime.setRealEndTime((long) 0); taskSubTime.setComplatedStatus(subTimeId.getCompletedStatus()); taskSubTimeDao.updateByPrimaryKeySelective(taskSubTime); -// } + } + -// //查找此用户在任务下的成员 -// ProMember member = proMemberService.selectByUserId(currentUserId,taskDetail.getProjectId()); -// //是否需要全部打卡完成 -// if(taskDetail.getFinishNeedAll()==0) { -//// //是否有分组 -//// if (taskDetail.getHasGroup() == 1) { -//// //检查分组下的任务的完成状态 -//// List subTimeList = taskDetailDao.selectSubTaskByGroupId(taskDetail.getId(), taskSubTime.getBeginTime(), taskSubTime.getEndTime()); -//// if(CollectionUtil.isNotEmpty(subTimeList)){ -//// for (ProTaskSubTime subTime : subTimeList) { -//// ProSubTimeMember subTimeMember = taskDetailService.getProcessByUserIdAndTask(currentUserId, subTime.getId()); -//// if(ObjectUtil.isNull(subTimeMember) || subTimeMember.getComplatedStatus() != 2){ -//// log.info("分组下任务未全部完成:{}",subTime.getId()); -//// throw new BaseException(CodeEnum.SUB_TASK_IS_NOT_FINISH); -//// } -//// } -//// } -//// } -//// //查询任务下的交付物 -//// ProTaskDeliverExample deliverExample = new ProTaskDeliverExample(); -//// deliverExample.createCriteria().andTaskDetailIdEqualTo(taskSubTime.getTaskDetailId()) -//// .andIsInputEqualTo(0); -//// List deliverList = taskDeliverDao.selectByExample(deliverExample); -//// if (CollectionUtil.isNotEmpty(deliverList)) { -//// for (ProTaskDeliver taskDeliver : deliverList) { -//// ProTaskDeliverPostLogExample postLogExample = new ProTaskDeliverPostLogExample(); -//// postLogExample.createCriteria().andTaskSubTimeIdEqualTo(subTimeId.getId()) -//// .andDeliverIdEqualTo(taskDeliver.getId()); -//// List postLogList = proTaskDeliverPostLogDao.selectByExample(postLogExample); -//// if (CollectionUtil.isEmpty(postLogList)) { -//// throw new BaseException(CodeEnum.TASK_NOT_UPLOAD_DELIVER); -//// } -//// } -//// } -// -// ProSubTimeMember subTimeMember = isFinishTask(member.getId(),subTimeId.getId()); -// if(ObjectUtil.isNull(subTimeMember)){ -// subTimeMember = new ProSubTimeMember(); -// subTimeMember.setId(snowflake.nextId()); -// subTimeMember.setComplatedStatus((byte) completedStatus); -// subTimeMember.setMemberId(member.getId()); -// subTimeMember.setTaskSubTimeId(subTimeId.getId()); -// subTimeMember.setRealFinishTime(System.currentTimeMillis()); -// proSubTimeMemberDao.insertSelective(subTimeMember); -// }else { -// subTimeMember.setComplatedStatus((byte) completedStatus); -// subTimeMember.setRealFinishTime(System.currentTimeMillis()); -// proSubTimeMemberDao.updateByPrimaryKeySelective(subTimeMember); -// } -// }else { -// ProSubTimeMember subTimeMember = isFinishTask(member.getId(),subTimeId.getId()); -// if(ObjectUtil.isNotNull(subTimeMember)){ -// subTimeMember.setComplatedStatus((byte) completedStatus); -// subTimeMember.setRealFinishTime(System.currentTimeMillis()); -// proSubTimeMemberDao.updateByPrimaryKeySelective(subTimeMember); -// }else { -// subTimeMember = new ProSubTimeMember(); -// subTimeMember.setId(snowflake.nextId()); -// subTimeMember.setComplatedStatus((byte) completedStatus); -// subTimeMember.setTaskSubTimeId(subTimeId.getId()); -// subTimeMember.setMemberId(member.getId()); -// subTimeMember.setRealFinishTime(System.currentTimeMillis()); -// proSubTimeMemberDao.insertSelective(subTimeMember); -// } -// } //返回的任务详细信息 TaskVo.NormalTask normalTask = taskDetailService.getTaskInfoByTaskId(currentUserId, taskDetail.getProjectId(), subTimeId.getId()); //用智能助手发送消息 @@ -262,9 +202,9 @@ public class TaskSubTimeService implements ITaskSubTimeService { /** * 开始任务 * - * @param currentUserId - * @param startTaskDto - * @throws Exception + * @param currentUserId userid + * @param startTaskDto 开始任务 + * @throws Exception void */ @Override public void startTask(Long currentUserId, TaskDto.StartTask startTaskDto) throws Exception { @@ -327,13 +267,6 @@ public class TaskSubTimeService implements ITaskSubTimeService { syncMessage.setReceivers(messageUserList); messageService.sendStartTaskMessage(syncMessage); -// //发送同步消息 -// SysProject project = sysProjectDao.selectByPrimaryKey(startTaskDto.getProjectId()); -// //已发布的项目才同步 -// if (ObjectUtil.isNotNull(project.getPublished()) && project.getPublished() == 1) { -// messageService.sendSyncMessageWithStart(currentUserId, startTaskDto.getProjectId(), startTaskDto.getRoleId(), taskSubTime.getTaskDetailId(), now, -// taskSubTime.getEndTime() - taskSubTime.getBeginTime(),player); -// } //3.添加记录 proLogService.addNewProLog(now, taskSubTime.getId(), WebConstant.TASK_Execute_Type.Start.value, @@ -346,8 +279,8 @@ public class TaskSubTimeService implements ITaskSubTimeService { /** * 结束其他进行中的任务 * - * @param roleId - * @param time + * @param roleId 角色id + * @param time 时间 */ private void completeTask(Long subTaskId, Long roleId, Long time) { List proTaskSubTimeList = taskSubTimeDao.getUnderwayTaskByRoleId(subTaskId, roleId); @@ -388,8 +321,6 @@ public class TaskSubTimeService implements ITaskSubTimeService { throw new BaseException(CodeEnum.PARAM_ERROR); } if (ObjectUtil.isNotNull(addTask.getParentTaskId())) { -// ProTaskSubTime subTime = taskSubTimeDao.selectByPrimaryKey(addTask.getParentTaskId()); -// if(ObjectUtil.isNotNull(subTime)) { ProTaskDetail taskDetail = taskDetailDao.selectByPrimaryKey(addTask.getParentTaskId()); if (ObjectUtil.isNotNull(taskDetail)) { detail.setProjectId(taskDetail.getProjectId()); @@ -508,19 +439,25 @@ public class TaskSubTimeService implements ITaskSubTimeService { /** * 看板上查找任务信息 * - * @param currentUserId - * @param projectId - * @param roleId - * @param type - * @param page - * @param pageSize - * @return + * @param currentUserId userId + * @param projectId 项目id + * @param roleId 角色id + * @param type 任务状态 0未开始 1进行中 2已完成 + * @param page 页数 + * @param pageSize 每页数量 + * @return 任务列表 */ @Override - public List getKanbanTake(Long currentUserId, Long projectId, Long roleId, Integer type, Integer page, Integer pageSize) { - // - - return null; + public PageInfo getKanbanTake(Long currentUserId, Long projectId, Long roleId, Integer type, Integer page, Integer pageSize) throws Exception { + //查找此用户在任务下的成员 + ProMember member = proMemberService.selectByUserId(currentUserId, projectId); + if (ObjectUtil.isNull(member)) { + throw new BaseException(CodeEnum.NOT_MEMBER); + } + PageHelper.startPage(page, pageSize); + List kanBanTaskList = taskSubTimeDao.getKanbanTake(projectId,roleId,type,member.getId()); +// return new PageInfo<>(vos); + return new PageInfo<>(kanBanTaskList); } /** @@ -530,14 +467,15 @@ public class TaskSubTimeService implements ITaskSubTimeService { * @param changeKanbanTask */ @Override - public void changeKanbanTake(Long currentUserId, TaskDto.ChangeKanbanTask changeKanbanTask) { + public void changeKanbanTake(Long currentUserId, TaskDto.ChangeKanbanTask changeKanbanTask) throws Exception { //查找任务 ProTaskSubTime proTaskSubTime = taskSubTimeDao.selectByPrimaryKey(changeKanbanTask.getId()); if (ObjectUtil.isNull(proTaskSubTime)) { throw new BaseException(CodeEnum.NOT_TASK); } - if (changeKanbanTask.getType() == 2) { - - } + TaskDto.TaskSubTimeId subTimeId = new TaskDto.TaskSubTimeId(); + subTimeId.setId(changeKanbanTask.getId()); + subTimeId.setCompletedStatus(changeKanbanTask.getType()); + finishTask(currentUserId,subTimeId); } } 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 a3585967..933593d4 100644 --- a/tall/src/main/java/com/ccsens/tall/web/TaskController.java +++ b/tall/src/main/java/com/ccsens/tall/web/TaskController.java @@ -8,6 +8,7 @@ import com.ccsens.tall.service.ITaskSubTimeService; import com.ccsens.util.JsonResponse; import com.ccsens.util.WebConstant; import com.ccsens.util.annotation.OperateType; +import com.github.pagehelper.PageInfo; import io.jsonwebtoken.Claims; import io.swagger.annotations.*; import org.springframework.beans.factory.annotation.Autowired; @@ -128,14 +129,16 @@ public class TaskController { @ApiImplicitParam(name = "roleId", value = "角色id 不传则查找全部", required = true, paramType = "query") }) @RequestMapping(value = "kanban", method = RequestMethod.GET, produces = {"application/json;charset=UTF-8"}) - public JsonResponse> getKanbanTake(HttpServletRequest request, + public JsonResponse> getKanbanTake(HttpServletRequest request, @RequestParam(required = true)Long projectId, @RequestParam(required = false)Long roleId, @RequestParam(required = true)Integer type, @RequestParam(required = false)Integer page, @RequestParam(required = false)Integer pageSize) throws Exception { + page = page == null ? 1 : page; + pageSize = pageSize == null ? 10 : pageSize; Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject()); - List kanbanTaskList = subTimeService.getKanbanTake(currentUserId,projectId,roleId,type,page,pageSize); + PageInfo kanbanTaskList = subTimeService.getKanbanTake(currentUserId,projectId,roleId,type,page,pageSize); return JsonResponse.newInstance().ok(kanbanTaskList); } diff --git a/tall/src/main/resources/application.yml b/tall/src/main/resources/application.yml index b2acd365..c88e995d 100644 --- a/tall/src/main/resources/application.yml +++ b/tall/src/main/resources/application.yml @@ -1,4 +1,4 @@ spring: profiles: - active: dev - include: util-dev,common + active: test + include: util-test,common diff --git a/tall/src/main/resources/mapper_dao/SysProjectDao.xml b/tall/src/main/resources/mapper_dao/SysProjectDao.xml index 58283659..ebeb4647 100644 --- a/tall/src/main/resources/mapper_dao/SysProjectDao.xml +++ b/tall/src/main/resources/mapper_dao/SysProjectDao.xml @@ -142,7 +142,8 @@ t_sys_user_attention a left JOIN t_sys_project p ON a.project_id = p.id left join t_sys_project_label pl on pl.project_id = p.id - left join t_sys_label l on pl.label_id = l.id + left join t_sys_label l on pl.label_id = l.id and + l.user_id = #{userId} WHERE a.user_id = #{userId} AND @@ -198,7 +199,8 @@ t_sys_user_attention a left JOIN t_sys_project p ON a.project_id = p.id left join t_sys_project_label pl on pl.project_id = p.id - left join t_sys_label l on pl.label_id = l.id + left join t_sys_label l on pl.label_id = l.id and + l.user_id = #{userId} WHERE a.user_id = #{userId} AND diff --git a/tall/src/main/resources/mapper_dao/TaskSubTimeDao.xml b/tall/src/main/resources/mapper_dao/TaskSubTimeDao.xml index 246eddad..b5815ba1 100644 --- a/tall/src/main/resources/mapper_dao/TaskSubTimeDao.xml +++ b/tall/src/main/resources/mapper_dao/TaskSubTimeDao.xml @@ -28,4 +28,52 @@ p.id = #{projectId} + + \ No newline at end of file