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 | 145 +++++++++++++++++++++++++++++++++++++++---------
1 files changed, 117 insertions(+), 28 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 47438f0..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"));
+ }
+
/**
* 鏌ヨ寰呭姙浠诲姟
*
@@ -1169,11 +1245,13 @@
vo.setExecutionId(hisTaskList.get(0).getExecutionId());
vo.setCreateTime(hisTaskList.get(0).getStartTime());
// 鏌ヨ瀹為檯澶勭悊浜�
- long handlerUserId = Long.parseLong(hisTaskList.get(0).getAssignee());
- SysUser handlerUser = sysUserService.selectUserById(handlerUserId);
- if (Objects.nonNull(handlerUser)) {
- vo.setActualHandlerUserId(hisTaskList.get(0).getAssignee());
- vo.setActualHandlerUserName(handlerUser.getNickName());
+ if (StringUtils.isNotBlank(hisTaskList.get(0).getAssignee())) {
+ long handlerUserId = Long.parseLong(hisTaskList.get(0).getAssignee());
+ SysUser handlerUser = sysUserService.selectUserById(handlerUserId);
+ if (Objects.nonNull(handlerUser)) {
+ vo.setActualHandlerUserId(hisTaskList.get(0).getAssignee());
+ vo.setActualHandlerUserName(handlerUser.getNickName());
+ }
}
vo.setTaskDefinitionKey(hisTaskList.get(0).getTaskDefinitionKey());
this.setHandler(vo, hisTaskList.get(0).getIdentityLinks());
@@ -1270,13 +1348,7 @@
taskVO.getHandlerUnitId().add(dept.getDeptId());
taskVO.getHandlerUnitName().add(dept.getDeptName());
taskVO.getPromoterName().add(this.getDeptLeaderShowName(dept));
- String[] str = dept.getAncestors().split(",");
- if (str.length >= 4){
- taskVO.getPromoterUnitName().add(dept.getParentName() +"-"+dept.getDeptName());
- }else {
- taskVO.getPromoterUnitName().add(dept.getDeptName());
- }
-
+ taskVO.getPromoterUnitName().add(this.setDeptNameWithParentName(dept));
}
}
} else {
@@ -1448,14 +1520,16 @@
vo.setCreateTime(hisTask.getStartTime());
// 鏌ヨ瀹為檯澶勭悊浜�
- long handlerUserId = Long.parseLong(hisTask.getAssignee());
- SysUser handlerUser = sysUserService.selectUserById(handlerUserId);
- if (Objects.nonNull(handlerUser)) {
- vo.getHandlerId().add(handlerUserId);
- vo.getHandlerName().add(this.getUserShowName(handlerUser));
- if (Objects.nonNull(handlerUser.getDept())) {
- vo.getHandlerUnitId().add(handlerUser.getDept().getDeptId());
- vo.getHandlerUnitName().add(handlerUser.getDept().getDeptName());
+ if (StringUtils.isNotBlank(hisTask.getAssignee())) {
+ long handlerUserId = Long.parseLong(hisTask.getAssignee());
+ SysUser handlerUser = sysUserService.selectUserById(handlerUserId);
+ if (Objects.nonNull(handlerUser)) {
+ vo.getHandlerId().add(handlerUserId);
+ vo.getHandlerName().add(this.getUserShowName(handlerUser));
+ if (Objects.nonNull(handlerUser.getDept())) {
+ vo.getHandlerUnitId().add(handlerUser.getDept().getDeptId());
+ vo.getHandlerUnitName().add(handlerUser.getDept().getDeptName());
+ }
}
}
vo.setTaskDefinitionKey(hisTask.getTaskDefinitionKey());
@@ -1840,12 +1914,14 @@
vo.setCreateTime(hisTask.getStartTime());
// 鏌ヨ瀹為檯澶勭悊浜�
- long handlerUserId = Long.parseLong(hisTask.getAssignee());
- SysUser handlerUser = sysUserService.selectUserById(handlerUserId);
- if (Objects.nonNull(handlerUser)) {
- vo.getHandlerId().add(handlerUserId);
- if (Objects.nonNull(handlerUser.getDept())) {
- vo.getHandlerUnitId().add(handlerUser.getDept().getDeptId());
+ if (StringUtils.isNotBlank(hisTask.getAssignee())) {
+ long handlerUserId = Long.parseLong(hisTask.getAssignee());
+ SysUser handlerUser = sysUserService.selectUserById(handlerUserId);
+ if (Objects.nonNull(handlerUser)) {
+ vo.getHandlerId().add(handlerUserId);
+ if (Objects.nonNull(handlerUser.getDept())) {
+ vo.getHandlerUnitId().add(handlerUser.getDept().getDeptId());
+ }
}
}
this.setHandler(vo, hisTask.getIdentityLinks());
@@ -2092,7 +2168,7 @@
// 閮ㄩ棬
SysDept dept = sysDeptService.selectDeptById(Long.parseLong(split[1]));
if (Objects.nonNull(dept)) {
- vo.getPromoterUnitName().add(dept.getDeptName());
+ vo.getPromoterUnitName().add(this.setDeptNameWithParentName(dept));
vo.getPromoterName().add(this.getDeptLeaderShowName(dept));
}
}
@@ -2108,6 +2184,19 @@
}
/**
+ * 璁剧疆閮ㄩ棬鍚嶇О鏃跺甫涓婁笂绾ч儴闂ㄥ悕绉�
+ * @param dept
+ */
+ private String setDeptNameWithParentName(SysDept dept) {
+ String[] str = dept.getAncestors().split(",");
+ if (str.length >= 4){
+ return dept.getParentName() + " / " + dept.getDeptName();
+ }else {
+ return dept.getDeptName();
+ }
+ }
+
+ /**
* 璁剧疆浠诲姟鐨勫彂璧蜂汉&澶勭悊浜� 鍙湁寰呭姙浠诲姟鍜屽凡瀹屾垚浠诲姟鎵嶄細鎺夎繖涓柟娉�
*
* @param taskVO
--
Gitblit v1.8.0