Commit 7abcd537f5b3ddf98a490da3e86232db152682dc
1 parent
39f1e008
创建工单API封装
Showing
1 changed file
with
53 additions
and
0 deletions
urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/listener/FirstApprovalAutoCompleteListener.java
0 → 100644
| 1 | +package com.zteits.urbanops.module.workorder.service.garden.listener; | ||
| 2 | + | ||
| 3 | +/** | ||
| 4 | + * 类描述:第一次跳过审批,第二次手动审批 | ||
| 5 | + * 创建人:yanhuiqing | ||
| 6 | + * 创建时间:2025/12/18 20:28 | ||
| 7 | + * 修改人:yanhuiqing | ||
| 8 | + * 修改时间:2025/12/18 20:28 | ||
| 9 | + * 修改备注: | ||
| 10 | + * | ||
| 11 | + * @author yanhuiqing | ||
| 12 | + * @version 1.0 | ||
| 13 | + */ | ||
| 14 | +import org.flowable.engine.TaskService; | ||
| 15 | +import org.flowable.engine.delegate.TaskListener; | ||
| 16 | +import org.flowable.task.service.delegate.DelegateTask; | ||
| 17 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 18 | +import org.springframework.stereotype.Component; | ||
| 19 | + | ||
| 20 | +/** | ||
| 21 | + * 初审节点自动通过监听器 | ||
| 22 | + */ | ||
| 23 | +@Component("firstApprovalAutoCompleteListener") // 组件名,供流程设计器调用 | ||
| 24 | +public class FirstApprovalAutoCompleteListener implements TaskListener { | ||
| 25 | + | ||
| 26 | + // 注入Flowable的TaskService,用于完成任务 | ||
| 27 | + @Autowired | ||
| 28 | + private TaskService taskService; | ||
| 29 | + | ||
| 30 | + @Override | ||
| 31 | + public void notify(DelegateTask delegateTask) { | ||
| 32 | + // 1. 获取流程变量 | ||
| 33 | + String starterId = (String) delegateTask.getVariable("starterId"); // 发起人ID | ||
| 34 | + Boolean isFirstEnter = (Boolean) delegateTask.getVariable("isFirstEnterFirstApproval"); // 是否首次进入 | ||
| 35 | + Boolean isReturned = (Boolean) delegateTask.getVariable("isReturnedToFirstApproval"); // 是否退回 | ||
| 36 | + | ||
| 37 | + // 2. 获取当前审批节点的审批人ID | ||
| 38 | + String assigneeId = delegateTask.getAssignee(); | ||
| 39 | + | ||
| 40 | + // 3. 核心逻辑:首次进入 + 发起人=审批人 → 自动完成任务 | ||
| 41 | + if (isFirstEnter != null && isFirstEnter | ||
| 42 | + && !Boolean.TRUE.equals(isReturned) | ||
| 43 | + && starterId != null && starterId.equals(assigneeId)) { | ||
| 44 | + | ||
| 45 | + // 标记:首次进入已处理,后续不再触发自动通过 | ||
| 46 | + delegateTask.setVariable("isFirstEnterFirstApproval", false); | ||
| 47 | + | ||
| 48 | + // 自动完成任务(流程继续向下) | ||
| 49 | + taskService.complete(delegateTask.getId()); | ||
| 50 | + } | ||
| 51 | + // 若为退回进入(isReturned=true),则不执行自动完成,等待手动处理 | ||
| 52 | + } | ||
| 53 | +} | ||
| 0 | \ No newline at end of file | 54 | \ No newline at end of file |