From f1208474f771a1c233d7425c8ed13fbaa0d521ac Mon Sep 17 00:00:00 2001
From: baoshiwei <baoshiwei@shlanbao.cn>
Date: 星期三, 12 三月 2025 09:35:13 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/5.X' into 5.X

---
 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java |  133 ++++++++++++++++++++++++--------------------
 1 files changed, 72 insertions(+), 61 deletions(-)

diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java
index f75a188..f8a20b5 100644
--- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java
+++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java
@@ -1,14 +1,20 @@
 package org.dromara.workflow.service.impl;
 
-import cn.hutool.core.util.StrUtil;
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
 import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.domain.dto.CompleteTaskDTO;
+import org.dromara.common.core.domain.dto.StartProcessDTO;
+import org.dromara.common.core.domain.dto.StartProcessReturnDTO;
 import org.dromara.common.core.service.WorkflowService;
-import org.dromara.workflow.domain.ActHiProcinst;
-import org.dromara.workflow.service.IActHiProcinstService;
-import org.dromara.workflow.service.IActProcessInstanceService;
-import org.dromara.workflow.utils.WorkflowUtils;
-import org.flowable.engine.RuntimeService;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.warm.flow.orm.entity.FlowInstance;
+import org.dromara.workflow.common.ConditionalOnEnable;
+import org.dromara.workflow.domain.bo.CompleteTaskBo;
+import org.dromara.workflow.domain.bo.StartProcessBo;
+import org.dromara.workflow.service.IFlwDefinitionService;
+import org.dromara.workflow.service.IFlwInstanceService;
+import org.dromara.workflow.service.IFlwTaskService;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -19,23 +25,24 @@
  *
  * @author may
  */
+@ConditionalOnEnable
 @RequiredArgsConstructor
 @Service
 public class WorkflowServiceImpl implements WorkflowService {
 
-    @Autowired(required = false)
-    private RuntimeService runtimeService;
-    private final IActProcessInstanceService iActProcessInstanceService;
-    private final IActHiProcinstService iActHiProcinstService;
+    private final IFlwInstanceService flwInstanceService;
+    private final IFlwDefinitionService flwDefinitionService;
+    private final IFlwTaskService flwTaskService;
+
     /**
-     * 杩愯涓殑瀹炰緥 鍒犻櫎绋嬪疄渚嬶紝鍒犻櫎鍘嗗彶璁板綍锛屽垹闄や笟鍔′笌娴佺▼鍏宠仈淇℃伅
+     * 鍒犻櫎娴佺▼瀹炰緥
      *
-     * @param businessKeys 涓氬姟id
+     * @param businessIds 涓氬姟id
      * @return 缁撴灉
      */
     @Override
-    public boolean deleteRunAndHisInstance(List<String> businessKeys) {
-        return iActProcessInstanceService.deleteRunAndHisInstance(businessKeys);
+    public boolean deleteInstance(List<Long> businessIds) {
+        return flwInstanceService.deleteByBusinessIds(businessIds);
     }
 
     /**
@@ -44,78 +51,82 @@
      * @param taskId 浠诲姟id
      */
     @Override
-    public String getBusinessStatusByTaskId(String taskId) {
-        return WorkflowUtils.getBusinessStatusByTaskId(taskId);
+    public String getBusinessStatusByTaskId(Long taskId) {
+        FlowInstance flowInstance = flwInstanceService.selectByTaskId(taskId);
+        return ObjectUtil.isNotNull(flowInstance) ? flowInstance.getFlowStatus() : StringUtils.EMPTY;
     }
 
     /**
      * 鑾峰彇褰撳墠娴佺▼鐘舵��
      *
-     * @param businessKey 涓氬姟id
+     * @param businessId 涓氬姟id
      */
     @Override
-    public String getBusinessStatus(String businessKey) {
-        return WorkflowUtils.getBusinessStatus(businessKey);
+    public String getBusinessStatus(String businessId) {
+        FlowInstance flowInstance = flwInstanceService.selectInstByBusinessId(businessId);
+        return ObjectUtil.isNotNull(flowInstance) ? flowInstance.getFlowStatus() : StringUtils.EMPTY;
     }
 
     /**
-     * 璁剧疆娴佺▼鍙橀噺(鍏ㄥ眬鍙橀噺)
+     * 璁剧疆娴佺▼鍙橀噺
      *
-     * @param taskId       浠诲姟id
-     * @param variableName 鍙橀噺鍚嶇О
-     * @param value        鍙橀噺鍊�
+     * @param instanceId 娴佺▼瀹炰緥id
+     * @param variables  娴佺▼鍙橀噺
      */
     @Override
-    public void setVariable(String taskId, String variableName, Object value) {
-        runtimeService.setVariable(taskId, variableName, value);
+    public void setVariable(Long instanceId, Map<String, Object> variables) {
+        flwInstanceService.setVariable(instanceId, variables);
     }
 
     /**
-     * 璁剧疆娴佺▼鍙橀噺(鍏ㄥ眬鍙橀噺)
+     * 鑾峰彇娴佺▼鍙橀噺
      *
-     * @param taskId    浠诲姟id
-     * @param variables 娴佺▼鍙橀噺
+     * @param instanceId 娴佺▼瀹炰緥id
      */
     @Override
-    public void setVariables(String taskId, Map<String, Object> variables) {
-        runtimeService.setVariables(taskId, variables);
-    }
-
-    /**
-     * 璁剧疆娴佺▼鍙橀噺(鏈湴鍙橀噺,闈炲叏灞�鍙橀噺)
-     *
-     * @param taskId       浠诲姟id
-     * @param variableName 鍙橀噺鍚嶇О
-     * @param value        鍙橀噺鍊�
-     */
-    @Override
-    public void setVariableLocal(String taskId, String variableName, Object value) {
-        runtimeService.setVariableLocal(taskId, variableName, value);
-    }
-
-    /**
-     * 璁剧疆娴佺▼鍙橀噺(鏈湴鍙橀噺,闈炲叏灞�鍙橀噺)
-     *
-     * @param taskId    浠诲姟id
-     * @param variables 娴佺▼鍙橀噺
-     */
-    @Override
-    public void setVariablesLocal(String taskId, Map<String, Object> variables) {
-        runtimeService.setVariablesLocal(taskId, variables);
+    public Map<String, Object> instanceVariable(Long instanceId) {
+        return flwInstanceService.instanceVariable(instanceId);
     }
 
     /**
      * 鎸夌収涓氬姟id鏌ヨ娴佺▼瀹炰緥id
      *
-     * @param businessKey 涓氬姟id
+     * @param businessId 涓氬姟id
      * @return 缁撴灉
      */
     @Override
-    public String getInstanceIdByBusinessKey(String businessKey) {
-        ActHiProcinst actHiProcinst = iActHiProcinstService.selectByBusinessKey(businessKey);
-        if (actHiProcinst == null) {
-            return StrUtil.EMPTY;
-        }
-        return actHiProcinst.getId();
+    public Long getInstanceIdByBusinessId(String businessId) {
+        FlowInstance flowInstance = flwInstanceService.selectInstByBusinessId(businessId);
+        return ObjectUtil.isNotNull(flowInstance) ? flowInstance.getId() : null;
+    }
+
+    /**
+     * 鏂板绉熸埛娴佺▼瀹氫箟
+     *
+     * @param tenantId 绉熸埛id
+     */
+    @Override
+    public void syncDef(String tenantId) {
+        flwDefinitionService.syncDef(tenantId);
+    }
+
+    /**
+     * 鍚姩娴佺▼
+     *
+     * @param startProcess 鍙傛暟
+     */
+    @Override
+    public StartProcessReturnDTO startWorkFlow(StartProcessDTO startProcess) {
+        return flwTaskService.startWorkFlow(BeanUtil.toBean(startProcess, StartProcessBo.class));
+    }
+
+    /**
+     * 鍔炵悊浠诲姟
+     *
+     * @param completeTask 鍙傛暟
+     */
+    @Override
+    public boolean completeTask(CompleteTaskDTO completeTask) {
+        return flwTaskService.completeTask(BeanUtil.toBean(completeTask, CompleteTaskBo.class));
     }
 }

--
Gitblit v1.9.3