From b78b10c1b2aa6f615b7a31c1bd159dfac490d410 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期日, 23 三月 2025 12:13:54 +0800 Subject: [PATCH] 首页待办剩余时间排序 --- business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java | 78 ++++++++++++++++++++++++++++++++++++++ 1 files changed, 77 insertions(+), 1 deletions(-) diff --git a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java index 0c283e6..8c62e67 100644 --- a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java +++ b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java @@ -18,6 +18,7 @@ import com.ycl.domain.entity.*; import com.ycl.domain.form.*; import com.ycl.domain.json.*; +import com.ycl.domain.query.ProcessLogQuery; import com.ycl.domain.vo.*; import com.ycl.event.event.TaskLogEvent; import com.ycl.mapper.ProjectEngineeringMapper; @@ -28,6 +29,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ycl.domain.query.ProjectProcessQuery; import com.ycl.service.common.TaskCommonService; +import com.ycl.system.domain.base.AbsQuery; import com.ycl.system.service.ISysDeptService; import com.ycl.system.service.ISysDictTypeService; import com.ycl.system.service.ISysRoleService; @@ -378,7 +380,50 @@ .endOr(); } result.total(taskQuery.count()); - List<Task> taskList = taskQuery.listPage(pageSize * (pageNum - 1), pageSize); + List<Task> allTodoList = taskQuery.list(); + List<TaskOrderVO> orderList = new ArrayList<>(); + allTodoList.stream().forEach(task -> { + TaskOrderVO order = new TaskOrderVO(); + order.setTaskId(task.getId()); + // 璁$畻鍔炵悊鏃堕棿锛岃秴鏃剁殑鎺掑墠闈紝娌¤秴鏃剁殑鐢变綆鍒伴珮鎺掑簭锛屾病瓒呮椂鏃堕棿鐨勬帓鏈�鍚� + ProcessCoding processCoding = processCodingService.getByTaskId(task.getId(), task.getProcessInstanceId()); + if (Objects.nonNull(processCoding)) { + if (StringUtils.isNotBlank(processCoding.getRedTime())) { + Long overtime = getTime(processCoding.getRedTime()); + long durationTime = 0l; + if (Objects.nonNull(processCoding.getStartTaskTime())) { + durationTime = ((new Date()).getTime() - processCoding.getStartTaskTime().getTime()) / 1000; + } + if (overtime > durationTime) { + order.setNum((overtime - durationTime) / 3600); + } else { + order.setNum(-2000000L); + } + } else { + order.setNum(2000000L); + } + } else { + order.setNum(2000000L); + } + orderList.add(order); + }); + // 鍗囧簭鎺掑垪 + Collections.sort(orderList, Comparator.comparingLong(TaskOrderVO::getNum)); + int startNum = pageSize * (pageNum - 1); + int endNum = startNum + pageSize; + if (startNum >= orderList.size()) { + result.data(new ArrayList<>()).total(0L); + return; + } + int end = Math.min(endNum, orderList.size()); + List<String> targetTaskIds = orderList.subList(startNum, end).stream().map(TaskOrderVO::getTaskId).collect(Collectors.toList()); + List<Task> taskList = targetTaskIds.stream().map(taskId -> { + List<Task> list = allTodoList.stream().filter(task -> task.getId().equals(taskId)).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(list)) { + return null; + } + return list.get(0); + }).filter(Objects::nonNull).collect(Collectors.toList()); List<IndexCustomerTaskVO> vos = new ArrayList<>(); for (Task task : taskList) { IndexCustomerTaskVO taskVO = new IndexCustomerTaskVO(); @@ -923,6 +968,37 @@ return Result.ok("鎿嶄綔鎴愬姛"); } + @Override + public Result getProcessMsg(AbsQuery q) { + // 鏌ヨ嚜宸辩殑鏃ュ織 + ProcessLogQuery query = new ProcessLogQuery(); + if (! SecurityUtils.isAdmin(SecurityUtils.getUserId())) { + query.setUserId(SecurityUtils.getUserId()); + } + query.setEventTypeList(Arrays.asList(ProcessLogEventTypeEnum.DELEGATE.getValue(), + ProcessLogEventTypeEnum.REJECT.getValue(), + ProcessLogEventTypeEnum.JUMP.getValue(), + ProcessLogEventTypeEnum.FINISHED.getValue(), + ProcessLogEventTypeEnum.WAIT.getValue())); + query.setCurrentPage(q.getCurrentPage()); + query.setPageSize(q.getPageSize()); + Result result = processLogService.projectProcessLogPage(query); + List<ProcessLogVO> logs = (List<ProcessLogVO>) result.get("data"); + + logs.stream().forEach(log -> { + if (ProcessLogEventTypeEnum.FINISHED.equals(log.getEventType())) { + log.setContent("鎮ㄥ畬鎴愪簡浠诲姟锛�" + log.getTaskName()); + } else if (ProcessLogEventTypeEnum.REJECT.equals(log.getEventType())) { + log.setContent("鎮ㄩ┏鍥炰簡浠诲姟锛�" + log.getTaskName()); + } else if (ProcessLogEventTypeEnum.WAIT.equals(log.getEventType())) { + log.setContent("鎮ㄥ缂轰簡浠诲姟锛�" + log.getTaskName()); + } else if (ProcessLogEventTypeEnum.JUMP.equals(log.getEventType())) { + log.setContent("鎮ㄨ烦杩囦簡浠诲姟锛�" + log.getTaskName()); + } + }); + return Result.ok().data(logs).total((Long) result.get("total")); + } + /** * 鏌ヨ寰呭姙浠诲姟 * -- Gitblit v1.8.0