From 0dc15775095a25797daf376e47999f0c11486e75 Mon Sep 17 00:00:00 2001
From: luofl <1442745593@qq.com>
Date: 星期一, 07 四月 2025 22:17:13 +0800
Subject: [PATCH] 修改bug
---
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/StateProcessTemplateServiceImpl.java | 82 ++++++++++++++++++++++++++++++++++++++++
1 files changed, 81 insertions(+), 1 deletions(-)
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/StateProcessTemplateServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/StateProcessTemplateServiceImpl.java
index 9b71738..6ae87fc 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/StateProcessTemplateServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/StateProcessTemplateServiceImpl.java
@@ -27,6 +27,7 @@
import com.ruoyi.common.core.domain.BaseModel;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginUser;
+import com.ruoyi.common.core.domain.model.LoginUserApplet;
import com.ruoyi.common.enums.StateProcessActionEnum;
import com.ruoyi.common.enums.TaskEventType;
import com.ruoyi.common.exception.GlobalException;
@@ -274,6 +275,83 @@
stateTaskCenter.setFlowId(instance.getId().toString());
stateTaskCenter.setRemark(processStartBO.getRemark());
stateTaskCenter.setCreateBy(loginUser.getUser().getNickName());
+ stateTaskCenter.setVariable(JSONUtil.toJsonStr(processStartBO.getVariable()));
+ stateTaskCenter.setProjectId(JSONObject.parseObject(JSONUtil.toJsonStr(processStartBO.getVariable())).getString("projectId"));
+ stateTaskCenterService.save(stateTaskCenter);
+
+ // action记录
+ StateProcessInstanceAction stateProcessInstanceAction = new StateProcessInstanceAction();
+ stateProcessInstanceAction.setId(IdUtils.simpleUUID());
+ stateProcessInstanceAction.setInstanceId(instance.getId().toString());
+ stateProcessInstanceAction.setActionType(StateProcessActionEnum.START.getValue());
+ stateProcessInstanceAction.setAuditorId(creator.getCreateId());
+ stateProcessInstanceActionService.save(stateProcessInstanceAction);
+
+ // 添加拓展信息
+ StateProcessExtInstance stateProcessExtInstance = new StateProcessExtInstance();
+ stateProcessExtInstance.setId(instance.getId().toString());
+ stateProcessExtInstance.setTemplateId(lastTemplate.getId());
+ stateProcessExtInstance.setProcessId(flwProcess.getId().toString());
+
+ //保存version
+ stateProcessExtInstance.setProcessVersion(flwProcess.getProcessVersion());
+ stateProcessExtInstanceService.save(stateProcessExtInstance);
+ }
+ return true;
+ }
+
+ /**
+ * 启动流程
+ * @param processStartBO
+ * @return
+ */
+ @Transactional(rollbackFor = Exception.class)
+ @Override
+ public Boolean startApplet(ProcessStartBO processStartBO) {
+ String userId = "1";
+ String nickName = "admin";
+ FlowCreator creator = FlowCreator.of(userId, nickName);
+ //查询流程绑定
+ StateProcessModule stateProcessModule = stateProcessModuleService.getOne(Wrappers.<StateProcessModule>lambdaQuery()
+ .eq(StateProcessModule::getCategory, processStartBO.getCategory()));
+ if (ObjectUtil.isNull(stateProcessModule) || ObjectUtil.isEmpty(stateProcessModule.getTemplateId())) {
+ throw new GlobalException("请先配置流程引擎模版!");
+ }
+ //查询模版,准备启动
+ StateProcessTemplate template = this.getById(stateProcessModule.getTemplateId());
+ StateProcessTemplate lastTemplate = this.getOne(Wrappers.<StateProcessTemplate>lambdaQuery()
+ .eq(StateProcessTemplate::getTemplateKey, template.getTemplateKey())
+ .apply("(template_key, template_version) in(" +
+ "SELECT template_key, MAX(template_version) " +
+ "FROM state_process_template " +
+ "GROUP BY template_key)")
+ );
+
+ if (ObjectUtil.isNull(lastTemplate)) {
+ throw new GlobalException(StateErrorCode.PROCESS_TEMPLATE_NOT_EXISTS.getValue());
+ }
+ FlwProcess flwProcess = flowLongEngine.processService().getProcessById(lastTemplate.getWorkFlowId());
+ if (ObjectUtil.isNull(flwProcess)) {
+ throw new GlobalException(StateErrorCode.PROCESS_NOT_DEPLOY.getValue());
+ }
+ if (!Objects.equals(lastTemplate.getWorkflowVersion(), flwProcess.getProcessVersion())) {
+ throw new GlobalException(StateErrorCode.PROCESS_VERSION_ERROR.getValue());
+ }
+ //监听器参数补全
+ processStartBO.getVariable().put("category", processStartBO.getCategory());
+ // 开启流程
+ Optional<FlwInstance> flwInstanceOptional = flowLongEngine.startInstanceById(flwProcess.getId(), creator, processStartBO.getVariable());
+ if(flwInstanceOptional.isPresent()){
+ FlwInstance instance = flwInstanceOptional.get();
+ //存储任务中心信息
+ StateTaskCenter stateTaskCenter = new StateTaskCenter();
+ stateTaskCenter.setId(IdUtils.simpleUUID());
+ stateTaskCenter.setName(processStartBO.getName());
+ stateTaskCenter.setModuleName(processStartBO.getModuleName());
+ stateTaskCenter.setCategory(processStartBO.getCategory());
+ stateTaskCenter.setFlowId(instance.getId().toString());
+ stateTaskCenter.setRemark(processStartBO.getRemark());
+ stateTaskCenter.setCreateBy(nickName);
stateTaskCenter.setVariable(JSONUtil.toJsonStr(processStartBO.getVariable()));
stateTaskCenter.setProjectId(JSONObject.parseObject(JSONUtil.toJsonStr(processStartBO.getVariable())).getString("projectId"));
stateTaskCenterService.save(stateTaskCenter);
@@ -926,6 +1004,7 @@
FlwTask flwTask = flwTaskMapper.selectById(taskId);
// 直接拒绝当前流程
flowLongEngine.runtimeService().reject(flwTask.getInstanceId(), currentFlowCreator());
+ flwTaskMapper.deleteById(taskId);
// 动作执行记录
StateProcessInstanceAction record = new StateProcessInstanceAction();
record.setId(IdUtils.simpleUUID());
@@ -1203,7 +1282,7 @@
// 查询历史任务
List<FlwHisTask> flwHisTasks = flwHisTaskMapper.selectList(Wrappers.<FlwHisTask>lambdaQuery().eq(FlwHisTask::getInstanceId, instanceId));
-
+ processDetailVO.setInstanceId(String.valueOf(instanceId));
processDetailVO.setFlwHisTasks(flwHisTasks);
List<StateProcessInstanceAction> list = stateProcessInstanceActionService.list(Wrappers.<StateProcessInstanceAction>lambdaQuery().eq(StateProcessInstanceAction::getInstanceId, instanceId)
@@ -1287,6 +1366,7 @@
sysUserMap = new HashMap<>();
}
for (ProcessTaskListVO processTaskListVO : processTaskListVOS) {
+ processTaskListVO.setStatus(processTaskListVO.getTaskState() == 10 ? "2" : processTaskListVO.getTaskState().toString());
processTaskListVO.setTaskId(processTaskListVO.getId());
SysUser sysUser = sysUserMap.get(processTaskListVO.getCreateBy());
if (Objects.nonNull(sysUser)) {
--
Gitblit v1.7.1