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 3d52afee..6e9d4e26 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 @@ -2,6 +2,7 @@ package com.ccsens.tall.bean.vo; import cn.hutool.core.util.ObjectUtil; import com.fasterxml.jackson.annotation.JsonIgnore; +import com.github.pagehelper.PageInfo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -318,7 +319,19 @@ public class TaskVo { private String projectName; } - @ApiModel("查找看板信息") + + @ApiModel("看板信息") + @Data + public static class KanBan{ + @ApiModelProperty("状态code") + private Integer code; + @ApiModelProperty("状态名字") + private String typeName; + @ApiModelProperty("任务列表") + private com.github.pagehelper.PageInfo taskList; + } + + @ApiModel("看板信息任务列表") @Data public static class KanBanTask{ @ApiModelProperty("任务id") 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 84716763..5b24ec13 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 @@ -15,4 +15,6 @@ public interface TaskSubTimeDao extends ProTaskSubTimeMapper{ void clearTaskRealTime(@Param("projectId")Long projectId); List getKanbanTake(@Param("projectId")Long projectId, @Param("roleId")Long roleId,@Param("type") Integer type,@Param("memberId")Long memberId); + + List getKanbanTakeByType(@Param("projectId")Long projectId, @Param("roleId")Long roleId, @Param("type")Integer type); } 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 e58a29a9..dc845d97 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ITaskSubTimeService.java +++ b/tall/src/main/java/com/ccsens/tall/service/ITaskSubTimeService.java @@ -18,7 +18,7 @@ public interface ITaskSubTimeService { void clearTaskRealTime(Long projectId); - PageInfo getKanbanTake(Long currentUserId, Long projectId, Long roleId, Integer type, Integer page, Integer pageSize) throws Exception; + List getKanbanTake(Long currentUserId, Long projectId, Long roleId, Integer type, Integer page, Integer pageSize) throws Exception; 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 4acc4cdb..20f0eed1 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java +++ b/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java @@ -193,6 +193,9 @@ public class ProTaskDetailService implements IProTaskDetailService { if (ObjectUtil.isNotNull(subTimeMember)) { task.setRealEndTime(subTimeMember.getRealFinishTime()); task.setProcess(subTimeMember.getComplatedStatus()); + }else if(task.getProcess() > 2){ + task.setRealEndTime((long) 0); + task.setProcess(0); } } //二级任务配置 @@ -263,6 +266,9 @@ public class ProTaskDetailService implements IProTaskDetailService { if (ObjectUtil.isNotNull(subTimeMember)) { normalTask.setProcess(subTimeMember.getComplatedStatus()); normalTask.setRealEndTime(subTimeMember.getRealFinishTime()); + }else if(normalTask.getProcess() > 2){ + normalTask.setRealEndTime((long) 0); + normalTask.setProcess(0); } } //任务配置 @@ -531,11 +537,14 @@ public class ProTaskDetailService implements IProTaskDetailService { // //处理查询到的任务的插件 // managePlugin(currentUserId,task.getExecutorRole(),taskDetail); //任务的完成状态 - if(taskDetail.getProcess() == 0) { + if(taskDetail.getProcess() != 2) { ProSubTimeMember subTimeMember = getProcessByUserIdAndTask(currentUserId, taskDetail.getId()); if (ObjectUtil.isNotNull(subTimeMember)) { taskDetail.setProcess(subTimeMember.getComplatedStatus()); taskDetail.setRealEndTime(subTimeMember.getRealFinishTime()); + }else if(taskDetail.getProcess() > 2){ + taskDetail.setRealEndTime((long) 0); + taskDetail.setProcess(0); } } @@ -557,11 +566,14 @@ public class ProTaskDetailService implements IProTaskDetailService { // //处理查询到的任务的插件 // managePlugin(currentUserId,task.getExecutorRole(),taskDetail); //任务的完成状态 - if(taskDetail.getProcess() == 0) { + if(taskDetail.getProcess() != 2) { ProSubTimeMember proSubTimeMember = getProcessByUserIdAndTask(currentUserId, groupTask.getId()); if (ObjectUtil.isNotNull(proSubTimeMember)) { groupTask.setProcess(proSubTimeMember.getComplatedStatus()); groupTask.setRealEndTime(proSubTimeMember.getRealFinishTime()); + }else if(taskDetail.getProcess() > 2){ + taskDetail.setRealEndTime((long) 0); + taskDetail.setProcess(0); } } @@ -762,6 +774,9 @@ public class ProTaskDetailService implements IProTaskDetailService { if (ObjectUtil.isNotNull(proSubTimeMember)) { normalTask.setProcess(proSubTimeMember.getComplatedStatus()); normalTask.setRealEndTime(proSubTimeMember.getRealFinishTime()); + }else if(normalTask.getProcess() > 2){ + normalTask.setRealEndTime((long) 0); + normalTask.setProcess(0); } } ProRole proRole = proRoleDao.selectByPrimaryKey(normalTask.getExecutorRole()); 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 9199254e..8a635949 100644 --- a/tall/src/main/java/com/ccsens/tall/service/TaskSubTimeService.java +++ b/tall/src/main/java/com/ccsens/tall/service/TaskSubTimeService.java @@ -25,9 +25,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.util.*; @Slf4j @Service @@ -73,7 +71,7 @@ public class TaskSubTimeService implements ITaskSubTimeService { * 完成任务 * * @param currentUserId userId - * @param subTimeId 任务日期id + * @param subTimeId 任务日期id * @throws Exception 任务详情 */ @Override @@ -154,7 +152,7 @@ public class TaskSubTimeService implements ITaskSubTimeService { proSubTimeMemberDao.updateByPrimaryKeySelective(subTimeMember); } //不需要全部成员点完成,直接修改任务状态 - if(taskDetail.getFinishNeedAll() == 0){ + if (taskDetail.getFinishNeedAll() == 0) { taskSubTime.setRealEndTime(now); taskSubTime.setComplatedStatus(subTimeId.getCompletedStatus()); taskSubTimeDao.updateByPrimaryKeySelective(taskSubTime); @@ -203,7 +201,7 @@ public class TaskSubTimeService implements ITaskSubTimeService { * 开始任务 * * @param currentUserId userid - * @param startTaskDto 开始任务 + * @param startTaskDto 开始任务 * @throws Exception void */ @Override @@ -280,7 +278,7 @@ public class TaskSubTimeService implements ITaskSubTimeService { * 结束其他进行中的任务 * * @param roleId 角色id - * @param time 时间 + * @param time 时间 */ private void completeTask(Long subTaskId, Long roleId, Long time) { List proTaskSubTimeList = taskSubTimeDao.getUnderwayTaskByRoleId(subTaskId, roleId); @@ -440,24 +438,95 @@ public class TaskSubTimeService implements ITaskSubTimeService { * 看板上查找任务信息 * * @param currentUserId userId - * @param projectId 项目id - * @param roleId 角色id - * @param type 任务状态 0未开始 1进行中 2已完成 - * @param page 页数 - * @param pageSize 每页数量 + * @param projectId 项目id + * @param roleId 角色id + * @param type 任务状态 0未开始 1进行中 2已完成 + * @param page 页数 + * @param pageSize 每页数量 * @return 任务列表 */ @Override - public PageInfo getKanbanTake(Long currentUserId, Long projectId, Long roleId, Integer type, Integer page, Integer pageSize) throws Exception { + public List getKanbanTake(Long currentUserId, Long projectId, Long roleId, Integer type, Integer page, Integer pageSize) throws Exception { + //返回的list + List kanBans = new ArrayList<>(); //查找此用户在任务下的成员 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); + + //TODO 暂时确定三个状态 + Map typeMap = new HashMap<>(); + typeMap.put(0, "未开始"); + typeMap.put(1, "进行中"); + typeMap.put(2, "已完成"); + + if (ObjectUtil.isNull(type)) { + for (Map.Entry entry : typeMap.entrySet()) { + System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue()); + TaskVo.KanBan kanBan = new TaskVo.KanBan(); + kanBan.setCode(entry.getKey()); + kanBan.setTypeName(entry.getValue()); + PageHelper.startPage(page, pageSize); + if (kanBan.getCode() <= 2) { + List kanBanTaskList = taskSubTimeDao.getKanbanTake(projectId, roleId, kanBan.getCode(), member.getId()); + kanBan.setTaskList(new PageInfo<>(kanBanTaskList)); + } else { + List kanBanTaskList = taskSubTimeDao.getKanbanTakeByType(projectId, roleId, kanBan.getCode()); + kanBan.setTaskList(new PageInfo<>(kanBanTaskList)); + } + kanBans.add(kanBan); + } + } else { + TaskVo.KanBan kanBan = new TaskVo.KanBan(); + kanBan.setCode(type); + kanBan.setTypeName(typeMap.get(type)); + PageHelper.startPage(page, pageSize); + if (kanBan.getCode() <= 2) { + List kanBanTaskList = taskSubTimeDao.getKanbanTake(projectId, roleId, type, member.getId()); + kanBan.setTaskList(new PageInfo<>(kanBanTaskList)); + } else { + List kanBanTaskList = taskSubTimeDao.getKanbanTakeByType(projectId, roleId, type); + kanBan.setTaskList(new PageInfo<>(kanBanTaskList)); + } + kanBans.add(kanBan); + } + +// if (ObjectUtil.isNull(type)) { +// +// TaskVo.KanBan kanBan0 = new TaskVo.KanBan(); +// kanBan0.setCode(0); +// kanBan0.setTypeName("未开始"); +// PageHelper.startPage(page, pageSize); +// List kanBanTaskList0 = taskSubTimeDao.getKanbanTake(projectId, roleId, kanBan0.getCode(), member.getId()); +// kanBan0.setTaskList(new PageInfo<>(kanBanTaskList0)); +// +// TaskVo.KanBan kanBan1 = new TaskVo.KanBan(); +// kanBan1.setCode(1); +// kanBan1.setTypeName("进行中"); +// List kanBanTaskList1 = taskSubTimeDao.getKanbanTake(projectId, roleId, kanBan1.getCode(), member.getId()); +// kanBan1.setTaskList(new PageInfo<>(kanBanTaskList1)); +// +// TaskVo.KanBan kanBan2 = new TaskVo.KanBan(); +// kanBan2.setCode(2); +// kanBan2.setTypeName("已完成"); +// List kanBanTaskList2 = taskSubTimeDao.getKanbanTake(projectId, roleId, kanBan2.getCode(), member.getId()); +// kanBan2.setTaskList(new PageInfo<>(kanBanTaskList2)); +// +// kanBans.add(kanBan0); +// kanBans.add(kanBan1); +// kanBans.add(kanBan2); +// +// } else { +// TaskVo.KanBan kanBan = new TaskVo.KanBan(); +// kanBan.setCode(type); +// kanBan.setTypeName(typeMap.get(type)); +// PageHelper.startPage(page, pageSize); +// List kanBanTaskList0 = taskSubTimeDao.getKanbanTake(projectId, roleId, type, member.getId()); +// kanBan.setTaskList(new PageInfo<>(kanBanTaskList0)); +// kanBans.add(kanBan); +// } + return kanBans; } /** @@ -473,9 +542,14 @@ public class TaskSubTimeService implements ITaskSubTimeService { if (ObjectUtil.isNull(proTaskSubTime)) { throw new BaseException(CodeEnum.NOT_TASK); } - TaskDto.TaskSubTimeId subTimeId = new TaskDto.TaskSubTimeId(); - subTimeId.setId(changeKanbanTask.getId()); - subTimeId.setCompletedStatus(changeKanbanTask.getType()); - finishTask(currentUserId,subTimeId); + if (changeKanbanTask.getType() <= 2) { + TaskDto.TaskSubTimeId subTimeId = new TaskDto.TaskSubTimeId(); + subTimeId.setId(changeKanbanTask.getId()); + subTimeId.setCompletedStatus(changeKanbanTask.getType()); + finishTask(currentUserId, subTimeId); + } else { + proTaskSubTime.setComplatedStatus(changeKanbanTask.getType()); + taskSubTimeDao.updateByPrimaryKeySelective(proTaskSubTime); + } } } 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 933593d4..c9e90b8c 100644 --- a/tall/src/main/java/com/ccsens/tall/web/TaskController.java +++ b/tall/src/main/java/com/ccsens/tall/web/TaskController.java @@ -125,21 +125,21 @@ public class TaskController { @ApiOperation(value = "看板上查找任务信息", notes = "") @ApiImplicitParams({ @ApiImplicitParam(name = "projectId", value = "项目id 必填", required = true, paramType = "query"), - @ApiImplicitParam(name = "type", value = "必填 任务状态 0未开始 1进行中 2已完成", required = true, paramType = "query"), + @ApiImplicitParam(name = "type", value = "任务状态 0未开始 1进行中 2已完成", required = true, paramType = "query"), @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 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()); - PageInfo kanbanTaskList = subTimeService.getKanbanTake(currentUserId,projectId,roleId,type,page,pageSize); - return JsonResponse.newInstance().ok(kanbanTaskList); + List kanbanList = subTimeService.getKanbanTake(currentUserId,projectId,roleId,type,page,pageSize); + return JsonResponse.newInstance().ok(kanbanList); } @ApiOperation(value = "看板上修改任务信息", notes = "") diff --git a/tall/src/main/resources/mapper_dao/TaskSubTimeDao.xml b/tall/src/main/resources/mapper_dao/TaskSubTimeDao.xml index b5815ba1..1f85568e 100644 --- a/tall/src/main/resources/mapper_dao/TaskSubTimeDao.xml +++ b/tall/src/main/resources/mapper_dao/TaskSubTimeDao.xml @@ -76,4 +76,28 @@ ) ) + + \ No newline at end of file diff --git a/util/src/test/java/com/ccsens/util/Base64Test.java b/util/src/test/java/com/ccsens/util/Base64Test.java index cafd9a33..7499305c 100644 --- a/util/src/test/java/com/ccsens/util/Base64Test.java +++ b/util/src/test/java/com/ccsens/util/Base64Test.java @@ -38,8 +38,76 @@ public class Base64Test { @Test public void test02() throws Exception { - String s = ""; - String[] projectIds = s.split(","); - System.out.println(projectIds.toString()); + String[] strings = new String[]{"1590997352223", + "1591545600000", + "1592150400000", + "1592755200000", + "1593360000000", + "1593964800000", + "1594569600000", + "1595174400000", + "1595779200000", + "1596384000000", + "1596988800000", + "1597593600000", + "1598198400000", + "1598803200000", + "1599408000000", + "1600012800000", + "1600617600000", + "1601222400000", + "1601827200000", + "1602432000000", + "1603036800000", + "1603641600000", + "1604246400000", + "1604851200000", + "1605456000000", + "1606060800000", + "1606665600000", + "1607270400000", + "1607875200000", + "1608480000000", + "1609084800000" + }; + String[] strings1 = new String[]{ + "1591315200000", + "1591574400000", + "1592179200000", + "1592784000000", + "1593388800000", + "1593993600000", + "1594598400000", + "1595203200000", + "1595808000000", + "1596412800000", + "1597017600000", + "1597622400000", + "1598227200000", + "1598832000000", + "1599436800000", + "1600041600000", + "1600646400000", + "1601251200000", + "1601856000000", + "1602460800000", + "1603065600000", + "1603670400000", + "1604275200000", + "1604880000000", + "1605484800000", + "1606089600000", + "1606694400000", + "1607299200000", + "1607904000000", + "1608508800000", + "1609113600000" + }; + for(int i = 0 ;i