From da6e6e862645952683533a7a6a95d9080fe151e9 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期五, 03 一月 2025 16:43:26 +0800
Subject: [PATCH] 首页流程待办查询service更换
---
business/src/main/java/com/ycl/domain/vo/IndexCustomerTaskVO.java | 31 ++++++++++
business/src/main/resources/mapper/ProjectProcessMapper.xml | 9 +++
business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java | 93 +++++++++++++++++++++++++++++++
business/src/main/java/com/ycl/controller/ProjectProcessController.java | 2
business/src/main/java/com/ycl/service/ProjectProcessService.java | 10 +++
business/src/main/java/com/ycl/mapper/ProjectProcessMapper.java | 8 ++
6 files changed, 152 insertions(+), 1 deletions(-)
diff --git a/business/src/main/java/com/ycl/controller/ProjectProcessController.java b/business/src/main/java/com/ycl/controller/ProjectProcessController.java
index 7c9bbc1..cfc9775 100644
--- a/business/src/main/java/com/ycl/controller/ProjectProcessController.java
+++ b/business/src/main/java/com/ycl/controller/ProjectProcessController.java
@@ -97,7 +97,7 @@
public Result getAllTodoTask(ProjectProcessQuery query) {
Result result = Result.ok();
- projectProcessService.getAllTodoTask("", (int) query.getPageSize(), (int) query.getCurrentPage(), result);
+ projectProcessService.getIndexTodoTask("", (int) query.getPageSize(), (int) query.getCurrentPage(), result);
return result;
}
diff --git a/business/src/main/java/com/ycl/domain/vo/IndexCustomerTaskVO.java b/business/src/main/java/com/ycl/domain/vo/IndexCustomerTaskVO.java
new file mode 100644
index 0000000..1cf1825
--- /dev/null
+++ b/business/src/main/java/com/ycl/domain/vo/IndexCustomerTaskVO.java
@@ -0,0 +1,31 @@
+package com.ycl.domain.vo;
+
+import com.ycl.common.enums.business.HandlerTypeEnum;
+import com.ycl.common.enums.business.TaskStatusEnum;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 浠诲姟鍥炴樉鍐呭
+ *
+ * @author锛歺p
+ * @date锛�2024/11/29 10:59
+ */
+@Data
+public class IndexCustomerTaskVO extends CustomerTaskVO {
+
+ /**
+ * 椤圭洰id
+ */
+ private Long projectId;
+
+ /**
+ * 椤圭洰鍚嶇О
+ */
+ private String projectName;
+
+
+
+}
diff --git a/business/src/main/java/com/ycl/mapper/ProjectProcessMapper.java b/business/src/main/java/com/ycl/mapper/ProjectProcessMapper.java
index 2445307..76bb113 100644
--- a/business/src/main/java/com/ycl/mapper/ProjectProcessMapper.java
+++ b/business/src/main/java/com/ycl/mapper/ProjectProcessMapper.java
@@ -1,5 +1,6 @@
package com.ycl.mapper;
+import com.ycl.domain.entity.ProjectInfo;
import com.ycl.domain.entity.ProjectProcess;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -31,4 +32,11 @@
*/
IPage getPage(IPage page, @Param("query") ProjectProcessQuery query);
+ /**
+ * 閫氳繃娴佺▼瀹炰緥id鑾峰彇椤圭洰id銆佸悕绉�
+ *
+ * @param processInstanceId
+ * @return
+ */
+ ProjectInfo getProjectInfo(@Param("processInsId") String processInstanceId);
}
diff --git a/business/src/main/java/com/ycl/service/ProjectProcessService.java b/business/src/main/java/com/ycl/service/ProjectProcessService.java
index b5dcbc0..89da7d5 100644
--- a/business/src/main/java/com/ycl/service/ProjectProcessService.java
+++ b/business/src/main/java/com/ycl/service/ProjectProcessService.java
@@ -70,6 +70,16 @@
*/
void getAllTodoTask(String taskName, int pageSize, int pageNum, Result result);
+ /**
+ * 棣栭〉--鑾峰彇鍒嗛〉鏌ヨ寰呭姙浠诲姟
+ *
+ * @param taskName
+ * @param pageSize
+ * @param pageNum
+ * @param result
+ */
+ void getIndexTodoTask(String taskName, int pageSize, int pageNum, Result result);
+
Result detailByProcessInsId(TaskQuery query);
/**
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 0ba8055..032deda 100644
--- a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
@@ -25,6 +25,7 @@
import com.ycl.domain.form.TaskDelegationForm;
import com.ycl.domain.json.TaskDelegateData;
import com.ycl.domain.vo.CustomerTaskVO;
+import com.ycl.domain.vo.IndexCustomerTaskVO;
import com.ycl.domain.vo.ProjectProcessDetailVO;
import com.ycl.mapper.ProjectInfoMapper;
import com.ycl.mapper.ProjectProcessMapper;
@@ -254,6 +255,97 @@
}
return ok;
+ }
+
+ @Override
+ public void getIndexTodoTask(String taskName, int pageSize, int pageNum, Result result) {
+ TaskQuery taskQuery = taskService.createTaskQuery()
+ .active()
+ .includeProcessVariables()
+ .includeIdentityLinks()
+ .orderByTaskCreateTime().desc();
+
+ if (StringUtils.isNotBlank(taskName)) {
+ taskQuery.processDefinitionNameLike(taskName);
+ }
+ result.total(taskQuery.count());
+ List<Task> taskList = taskQuery.listPage(pageSize * (pageNum - 1), pageSize);
+ List<IndexCustomerTaskVO> vos = new ArrayList<>();
+ for (Task task : taskList) {
+ IndexCustomerTaskVO taskVO = new IndexCustomerTaskVO();
+ // 褰撳墠娴佺▼淇℃伅
+ taskVO.setTaskId(task.getId());
+ taskVO.setCreateTime(task.getCreateTime());
+ taskVO.setProcessDefId(task.getProcessDefinitionId());
+ taskVO.setExecutionId(task.getExecutionId());
+ taskVO.setTaskName(task.getName());
+ taskVO.setTaskStatus(TaskStatusEnum.TODO);
+ // 娴佺▼瀹氫箟淇℃伅
+ ProcessDefinition pd = repositoryService.createProcessDefinitionQuery()
+ .processDefinitionId(task.getProcessDefinitionId())
+ .singleResult();
+ taskVO.setDeployId(pd.getDeploymentId());
+ taskVO.setProcessName(pd.getName());
+ taskVO.setProcessInsId(task.getProcessInstanceId());
+ taskVO.setTaskDefinitionKey(task.getTaskDefinitionKey());
+
+ // 娴佺▼椤圭洰淇℃伅
+ ProjectInfo project = baseMapper.getProjectInfo(task.getProcessInstanceId());
+ if (Objects.nonNull(project)) {
+ taskVO.setProjectId(project.getId());
+ taskVO.setProjectName(project.getProjectName());
+ }
+
+ // 娴佺▼鍙戣捣浜轰俊鎭�
+ this.setPromoterInfo(taskVO);
+
+ // 涓�涓换鍔″彲鑳芥湁澶氫釜鍊欓�変汉/缁勶紝鎵�浠ラ渶瑕佷娇鐢╨ist
+ List<Long> handlerIds = new ArrayList<>(2);
+ List<String> handlerNames = new ArrayList<>(2);
+ List<Long> handlerUnitIds = new ArrayList<>(2);
+ List<String> handlerUnitNames = new ArrayList<>(2);
+
+ // 娴佺▼澶勭悊浜轰俊鎭�
+ List<? extends IdentityLinkInfo> identityLinks = task.getIdentityLinks();
+ for (IdentityLinkInfo identityLink : identityLinks) {
+ // 缁戝畾鐨勬槸鐢ㄦ埛锛屾煡鍑虹敤鎴峰鍚嶃�侀儴闂�
+ if (StringUtils.isNotBlank(identityLink.getUserId())) {
+ taskVO.setHandlerType(HandlerTypeEnum.USER);
+ SysUser sysUser = sysUserService.selectUserById(Long.parseLong(identityLink.getUserId()));
+ if (Objects.nonNull(sysUser)) {
+ handlerIds.add(sysUser.getUserId());
+ handlerNames.add(sysUser.getNickName());
+ if (Objects.nonNull(sysUser.getDept())) {
+ handlerUnitIds.add(sysUser.getDept().getDeptId());
+ handlerUnitNames.add(sysUser.getDept().getDeptName());
+ }
+ }
+ // 缁戝畾鐨勬槸瑙掕壊鎴栬�呴儴闂�
+ } else if (StringUtils.isNotBlank(identityLink.getGroupId())) {
+ if (identityLink.getGroupId().startsWith("dept")) { // 閮ㄩ棬鐨刬d鏄姞浜嗗墠缂�鐨勫锛歞ept:1
+ taskVO.setHandlerType(HandlerTypeEnum.DEPT);
+ String[] split = identityLink.getGroupId().split(":");
+ if (split.length > 1) {
+ // 閮ㄩ棬
+ SysDept dept = sysDeptService.selectDeptById(Long.parseLong(split[1]));
+ if (Objects.nonNull(dept)) {
+ handlerUnitIds.add(dept.getDeptId());
+ handlerUnitNames.add(dept.getDeptName());
+ }
+ }
+ } else {
+ taskVO.setHandlerType(HandlerTypeEnum.ROLE);
+ SysRole role = sysRoleService.selectRoleById(Long.parseLong(identityLink.getGroupId()));
+ if (Objects.nonNull(role)) {
+ handlerUnitIds.add(role.getRoleId());
+ handlerUnitNames.add(role.getRoleName());
+ }
+ }
+ }
+ }
+ vos.add(taskVO);
+ }
+ result.put("taskList", vos);
}
@Override
@@ -529,6 +621,7 @@
SysRole role = sysRoleService.selectRoleById(Long.parseLong(identityLink.getGroupId()));
if (Objects.nonNull(role)) {
handlerUnitIds.add(Long.parseLong(identityLink.getGroupId()));
+ handlerUnitNames.add(role.getRoleName());
}
}
}
diff --git a/business/src/main/resources/mapper/ProjectProcessMapper.xml b/business/src/main/resources/mapper/ProjectProcessMapper.xml
index 7fe3996..aa8f67a 100644
--- a/business/src/main/resources/mapper/ProjectProcessMapper.xml
+++ b/business/src/main/resources/mapper/ProjectProcessMapper.xml
@@ -76,4 +76,13 @@
</select>
+
+ <select id="getProjectInfo" parameterType="string" resultType="com.ycl.domain.entity.ProjectInfo">
+ SELECT
+ PI.id, PI.project_name
+ FROM
+ t_project_process PP
+ INNER JOIN t_project_info PI ON PP.project_id = PI.id AND PI.deleted = 0 AND PP.process_ins_id = #{processInsId}
+ </select>
+
</mapper>
--
Gitblit v1.8.0