This commit is contained in:
那些花儿
2025-08-25 11:11:49 +08:00
parent dde0dc9610
commit b6d3ec443a
10 changed files with 347 additions and 60 deletions
@@ -3,7 +3,6 @@ package com.budwk.app.flow.controller;
import cn.dev33.satoken.annotation.SaCheckLogin;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.lang.Dict;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.result.Result;
import com.budwk.app.base.vo.LabelValueVO;
@@ -18,8 +17,8 @@ import com.budwk.app.flow.entity.ProcessDefine;
import com.budwk.app.flow.entity.ProcessInstance;
import com.budwk.app.flow.entity.ProcessTask;
import com.budwk.app.flow.enums.ProcessEventTypeEnum;
import com.budwk.app.flow.enums.ProcessSubmitTypeEnum;
import com.budwk.app.flow.enums.ProcessTaskStateEnum;
import com.budwk.app.flow.service.FlowCommonService;
import com.budwk.app.flow.vo.HighLightVO;
import com.budwk.app.flow.vo.ProcessInstanceVO;
import com.budwk.app.flow.vo.ProcessTaskVO;
@@ -49,6 +48,8 @@ public class FlowCommonController {
private FlowEngine flowEngine;
@Inject
private Dao dao;
@Inject
private FlowCommonService flowCommonService;
@At("/approval/form")
@SaCheckLogin
@@ -235,46 +236,47 @@ public class FlowCommonController {
@Aop(TransAop.READ_COMMITTED)
public Result executeTask(@Param("data") String param) {
Dict args = Json.fromJson(Dict.class, param);
Long processTaskId = args.getLong(FlowConst.PROCESS_TASK_ID_KEY);
String operator = SecurityUtil.getUserId();
args.remove(FlowConst.PROCESS_TASK_ID_KEY);
Integer submitType = args.getInt(FlowConst.SUBMIT_TYPE);
if (submitType == null) {
submitType = ProcessSubmitTypeEnum.AGREE.getCode();
}
args.put(FlowConst.SUBMIT_TYPE, submitType);
// 设置办理人信息到表单参数
args.put(FlowConst.TASK_FORM_DATA_PREFIX + "userName", SecurityUtil.getUserUsername());
args.put(FlowConst.TASK_FORM_DATA_PREFIX + "loginName", SecurityUtil.getUserLoginname());
args.put(FlowConst.TASK_FORM_DATA_PREFIX + "unitId", SecurityUtil.getUnitId());
args.put(FlowConst.TASK_FORM_DATA_PREFIX + "unitName", SecurityUtil.getUnitId());
args.put(FlowConst.TASK_FORM_DATA_PREFIX + "unionId", SecurityUtil.getUnionId());
if (ObjectUtil.equals(submitType, ProcessSubmitTypeEnum.ROLLBACK.getCode())) {
// 退回上一个节点
flowEngine.executeAndJumpTask(processTaskId, operator, args, null);
} else if (ObjectUtil.equals(submitType, ProcessSubmitTypeEnum.REJECT.getCode())) {
// 拒绝,跳转到结束节点
flowEngine.executeAndJumpToEnd(processTaskId, operator, args);
} else if (ObjectUtil.equals(submitType, ProcessSubmitTypeEnum.JUMP.getCode())) {
// 跳转到指定节点
String taskName = args.getStr(FlowConst.TASK_NAME);
flowEngine.executeAndJumpTask(processTaskId, operator, args, taskName);
} else if (ObjectUtil.equals(submitType, ProcessSubmitTypeEnum.ROLLBACK_TO_OPERATOR.getCode())) {
// 退回发起人
flowEngine.executeAndJumpToFirstTaskNode(processTaskId, operator, args);
} else if (ObjectUtil.equals(submitType, ProcessSubmitTypeEnum.COUNTERSIGN_DISAGREE.getCode())) {
// 会签不同意,追加不同意标识
args.put(FlowConst.COUNTERSIGN_DISAGREE_FLAG, 1);
flowEngine.executeProcessTask(processTaskId, operator, args);
} else if (ObjectUtil.equals(submitType, ProcessSubmitTypeEnum.RE_APPLY.getCode())) {
// 重新提交
flowEngine.executeProcessTask(processTaskId, operator, args);
} else {
// 默认执行
flowEngine.executeProcessTask(processTaskId, operator, args);
}
// Long processTaskId = args.getLong(FlowConst.PROCESS_TASK_ID_KEY);
// String operator = SecurityUtil.getUserId();
// args.remove(FlowConst.PROCESS_TASK_ID_KEY);
// Integer submitType = args.getInt(FlowConst.SUBMIT_TYPE);
// if (submitType == null) {
// submitType = ProcessSubmitTypeEnum.AGREE.getCode();
// }
// args.put(FlowConst.SUBMIT_TYPE, submitType);
//
// // 设置办理人信息到表单参数
// args.put(FlowConst.TASK_FORM_DATA_PREFIX + "userName", SecurityUtil.getUserUsername());
// args.put(FlowConst.TASK_FORM_DATA_PREFIX + "loginName", SecurityUtil.getUserLoginname());
// args.put(FlowConst.TASK_FORM_DATA_PREFIX + "unitId", SecurityUtil.getUnitId());
// args.put(FlowConst.TASK_FORM_DATA_PREFIX + "unitName", SecurityUtil.getUnitId());
// args.put(FlowConst.TASK_FORM_DATA_PREFIX + "unionId", SecurityUtil.getUnionId());
//
// if (ObjectUtil.equals(submitType, ProcessSubmitTypeEnum.ROLLBACK.getCode())) {
// // 退回上一个节点
// flowEngine.executeAndJumpTask(processTaskId, operator, args, null);
// } else if (ObjectUtil.equals(submitType, ProcessSubmitTypeEnum.REJECT.getCode())) {
// // 拒绝,跳转到结束节点
// flowEngine.executeAndJumpToEnd(processTaskId, operator, args);
// } else if (ObjectUtil.equals(submitType, ProcessSubmitTypeEnum.JUMP.getCode())) {
// // 跳转到指定节点
// String taskName = args.getStr(FlowConst.TASK_NAME);
// flowEngine.executeAndJumpTask(processTaskId, operator, args, taskName);
// } else if (ObjectUtil.equals(submitType, ProcessSubmitTypeEnum.ROLLBACK_TO_OPERATOR.getCode())) {
// // 退回发起人
// flowEngine.executeAndJumpToFirstTaskNode(processTaskId, operator, args);
// } else if (ObjectUtil.equals(submitType, ProcessSubmitTypeEnum.COUNTERSIGN_DISAGREE.getCode())) {
// // 会签不同意,追加不同意标识
// args.put(FlowConst.COUNTERSIGN_DISAGREE_FLAG, 1);
// flowEngine.executeProcessTask(processTaskId, operator, args);
// } else if (ObjectUtil.equals(submitType, ProcessSubmitTypeEnum.RE_APPLY.getCode())) {
// // 重新提交
// flowEngine.executeProcessTask(processTaskId, operator, args);
// } else {
// // 默认执行
// flowEngine.executeProcessTask(processTaskId, operator, args);
// }
flowCommonService.executeTask(args);
return Result.success();
}
@@ -0,0 +1,65 @@
package com.budwk.app.flow.service;
import cn.hutool.core.lang.Dict;
import cn.hutool.core.util.ObjectUtil;
import com.budwk.app.flow.constant.FlowConst;
import com.budwk.app.flow.engine.FlowEngine;
import com.budwk.app.flow.enums.ProcessSubmitTypeEnum;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
@IocBean
public class FlowCommonService {
@Inject
private FlowEngine flowEngine;
/**
* 执行任务
* @param args
*/
public void executeTask(Dict args){
Long processTaskId = args.getLong(FlowConst.PROCESS_TASK_ID_KEY);
String operator = SecurityUtil.getUserId();
args.remove(FlowConst.PROCESS_TASK_ID_KEY);
Integer submitType = args.getInt(FlowConst.SUBMIT_TYPE);
if (submitType == null) {
submitType = ProcessSubmitTypeEnum.AGREE.getCode();
}
args.put(FlowConst.SUBMIT_TYPE, submitType);
// 设置办理人信息到表单参数
args.put(FlowConst.TASK_FORM_DATA_PREFIX + "userName", SecurityUtil.getUserUsername());
args.put(FlowConst.TASK_FORM_DATA_PREFIX + "loginName", SecurityUtil.getUserLoginname());
args.put(FlowConst.TASK_FORM_DATA_PREFIX + "unitId", SecurityUtil.getUnitId());
args.put(FlowConst.TASK_FORM_DATA_PREFIX + "unitName", SecurityUtil.getUnitId());
args.put(FlowConst.TASK_FORM_DATA_PREFIX + "unionId", SecurityUtil.getUnionId());
if (ObjectUtil.equals(submitType, ProcessSubmitTypeEnum.ROLLBACK.getCode())) {
// 退回上一个节点
flowEngine.executeAndJumpTask(processTaskId, operator, args, null);
} else if (ObjectUtil.equals(submitType, ProcessSubmitTypeEnum.REJECT.getCode())) {
// 拒绝,跳转到结束节点
flowEngine.executeAndJumpToEnd(processTaskId, operator, args);
} else if (ObjectUtil.equals(submitType, ProcessSubmitTypeEnum.JUMP.getCode())) {
// 跳转到指定节点
String taskName = args.getStr(FlowConst.TASK_NAME);
flowEngine.executeAndJumpTask(processTaskId, operator, args, taskName);
} else if (ObjectUtil.equals(submitType, ProcessSubmitTypeEnum.ROLLBACK_TO_OPERATOR.getCode())) {
// 退回发起人
flowEngine.executeAndJumpToFirstTaskNode(processTaskId, operator, args);
} else if (ObjectUtil.equals(submitType, ProcessSubmitTypeEnum.COUNTERSIGN_DISAGREE.getCode())) {
// 会签不同意,追加不同意标识
args.put(FlowConst.COUNTERSIGN_DISAGREE_FLAG, 1);
flowEngine.executeProcessTask(processTaskId, operator, args);
} else if (ObjectUtil.equals(submitType, ProcessSubmitTypeEnum.RE_APPLY.getCode())) {
// 重新提交
flowEngine.executeProcessTask(processTaskId, operator, args);
} else {
// 默认执行
flowEngine.executeProcessTask(processTaskId, operator, args);
}
}
}