diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/manage/TodoCenterManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/manage/TodoCenterManage.java index 58e2f41..8c55664 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/manage/TodoCenterManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/manage/TodoCenterManage.java @@ -8,6 +8,7 @@ import com.ningdatech.basic.exception.BizException; import com.ningdatech.basic.function.VUtils; import com.ningdatech.basic.model.PageVo; import com.ningdatech.basic.util.CollUtils; +import com.ningdatech.basic.util.NdDateUtils; import com.ningdatech.pmapi.common.constant.CommonConst; import com.ningdatech.pmapi.common.helper.UserInfoHelper; import com.ningdatech.pmapi.common.model.entity.ExcelExportWriter; @@ -123,26 +124,12 @@ public class TodoCenterManage { } List instCodes = userTodoList.stream().map(ProcessTaskVo::getInstanceId).collect(Collectors.toList()); - List resList = new ArrayList<>(); - List instList = new ArrayList<>(); - for (ProcessTaskVo processTaskVo : userTodoList) { - Map map = resList.stream().collect(Collectors.toMap(ProcessTaskVo::getInstanceId, v -> v)); - if (instList.contains(processTaskVo.getInstanceId())){ - // 比较两个processTaskVo的endTime,保留最后处理的 - ProcessTaskVo vo = map.get(processTaskVo.getInstanceId()); - int compare = processTaskVo.getTaskEndTime().compareTo(vo.getTaskEndTime()); - if (compare > 0){ - instList.remove(processTaskVo.getInstanceId()); - resList.remove(vo); - }else { - continue; - } - } - instList.add(processTaskVo.getInstanceId()); - resList.add(processTaskVo); - } - - Map taskVoMap = resList.stream().collect(Collectors.toMap(ProcessTaskVo::getInstanceId, v -> v)); + Set processSet = Sets.newHashSet(); + Map taskMap = userTodoList.stream() + .sorted((t1,t2) -> t2.getTaskCreateTime().compareTo(t1.getTaskCreateTime())) + .collect(Collectors.toList()).stream() + .filter(v -> processSet.add(v.getInstanceId())) + .collect(Collectors.toMap(ProcessTaskVo::getInstanceId, v -> v)); //2.再分页查询项目信息 ProjectListReq projectListReq = new ProjectListReq(); @@ -158,7 +145,7 @@ public class TodoCenterManage { ResToBeProcessedVO res = new ResToBeProcessedVO(); BeanUtils.copyProperties(d, res); res.setProjectId(d.getId()); - ProcessTaskVo taskVo = taskVoMap.get(d.getInstCode()); + ProcessTaskVo taskVo = taskMap.get(d.getInstCode()); res.setNodeId(taskVo.getTaskDefKey()); res.setProcessStatusName(taskVo.getStatus()); res.setProcessLaunchTime(d.getCreateOn()); @@ -192,7 +179,6 @@ public class TodoCenterManage { projectListReq.setInstCodes(instCodes); BeanUtils.copyProperties(param, projectListReq); List projects = CollUtil.isEmpty(userTodoList) ? Collections.emptyList() : projectLibManage.projectList(projectListReq); - PageVo projectLibList = projectLibManage.projectLibList(projectListReq); ExcelExportWriter excelExportWriter = new ExcelExportWriter(); String fileName = null; @@ -644,26 +630,13 @@ public class TodoCenterManage { List instCodes = userIdoList.stream().map(ProcessTaskVo::getInstanceId).collect(Collectors.toList()); - List resList = new ArrayList<>(); - List instList = new ArrayList<>(); - for (ProcessTaskVo processTaskVo : userIdoList) { - Map map = resList.stream().collect(Collectors.toMap(ProcessTaskVo::getInstanceId, v -> v)); - if (instList.contains(processTaskVo.getInstanceId())){ - // 比较两个processTaskVo的endTime,保留最后处理的 - ProcessTaskVo vo = map.get(processTaskVo.getInstanceId()); - int compare = processTaskVo.getTaskEndTime().compareTo(vo.getTaskEndTime()); - if (compare > 0){ - instList.remove(processTaskVo.getInstanceId()); - resList.remove(vo); - }else { - continue; - } - } - instList.add(processTaskVo.getInstanceId()); - resList.add(processTaskVo); - } + Set processSet = Sets.newHashSet(); + Map taskMap = userIdoList.stream() + .sorted((t1,t2) -> t2.getTaskEndTime().compareTo(t1.getTaskEndTime())) + .collect(Collectors.toList()).stream() + .filter(v -> processSet.add(v.getInstanceId())) + .collect(Collectors.toMap(ProcessTaskVo::getInstanceId, v -> v)); - Map taskVoMap = resList.stream().collect(Collectors.toMap(ProcessTaskVo::getInstanceId, v -> v)); // 分页查询项目信息 ProjectListReq projectListReq = new ProjectListReq(); projectListReq.setInstCodes(instCodes); @@ -677,10 +650,10 @@ public class TodoCenterManage { ResToBeProcessedVO res = new ResToBeProcessedVO(); BeanUtils.copyProperties(d, res); res.setProjectId(d.getId()); - ProcessTaskVo taskVo = taskVoMap.get(d.getInstCode()); + ProcessTaskVo taskVo = taskMap.get(d.getInstCode()); res.setProcessStatusName(taskVo.getStatus()); res.setProcessLaunchTime(d.getCreateOn()); - res.setProcessHandleTime(d.getUpdateOn()); + res.setProcessHandleTime(NdDateUtils.date2LocalDateTime(taskVo.getTaskEndTime())); return res; }).collect(Collectors.toList()); return PageVo.of(resVos, projectPage.getTotal()); diff --git a/pmapi/src/test/java/com/ningdatech/pmapi/statemachine/StateMachineTest.java b/pmapi/src/test/java/com/ningdatech/pmapi/statemachine/StateMachineTest.java index d563236..63b8810 100644 --- a/pmapi/src/test/java/com/ningdatech/pmapi/statemachine/StateMachineTest.java +++ b/pmapi/src/test/java/com/ningdatech/pmapi/statemachine/StateMachineTest.java @@ -26,7 +26,7 @@ public class StateMachineTest extends AppTests { public void stateMachineTest() throws Exception { Project project = new Project(); project.setStage(ProjectStatusEnum.PROJECT_APPROVED.getCode()); - project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); + project.setStatus(ProjectStatusEnum.IN_THE_ANNUAL_PLAN.getCode()); project.setDeclareAmount(BigDecimal.valueOf(2000)); stateMachineUtils.execute(project, stateMachineUtils.getProjectStatusPassEvent(project.getStatus())); System.out.println(String.format("project:%s", JSON.toJSONString(project)));