From e1c5c27a41e2410c0689b70319488c16d2e4fd51 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期六, 06 九月 2025 21:13:08 +0800
Subject: [PATCH] 增加组长取回功能

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/FlowVO.java                    |    4 ++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/utils/WordReplaceUtil.java  |   28 +++++++++-----
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/DoneQueryService.java     |   26 +-----------
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/WIthdrawService.java      |   30 +++++++--------
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/FlowMgrController.java |   12 ++++++
 5 files changed, 51 insertions(+), 49 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/FlowMgrController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/FlowMgrController.java
index 89f11f7..ee7bdf9 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/FlowMgrController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/FlowMgrController.java
@@ -196,4 +196,16 @@
 			return R.fail(e.getMessage());
 		}
 	}
+
+	@GetMapping("/takeback")
+	@Operation(summary = "缁勯暱鍙栧洖", description = "浠庡叾浠栦换鍔¤妭鐐圭洿鎺ユ挙鍥炲埌缁勯暱娲惧伐鑺傜偣")
+	public R<Void> takeback(String processInstanceId)  {
+		try {
+			withdrawService.takeBackToDispatch(processInstanceId);
+			return R.success();
+		}catch(Exception e) {
+			log.error("<UNK>", e);
+			return R.fail(e.getMessage());
+		}
+	}
 }
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/DoneQueryService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/DoneQueryService.java
index 389f3cb..c4a1760 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/DoneQueryService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/DoneQueryService.java
@@ -4,35 +4,19 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import lombok.AllArgsConstructor;
 import org.flowable.engine.HistoryService;
-import org.flowable.engine.RuntimeService;
 import org.flowable.engine.TaskService;
 import org.flowable.engine.history.HistoricProcessInstance;
-import org.flowable.engine.history.HistoricProcessInstanceQuery;
-import org.flowable.engine.task.Comment;
 import org.flowable.task.api.Task;
 import org.flowable.task.api.TaskInfo;
-import org.flowable.task.api.TaskInfoQuery;
-import org.flowable.task.api.TaskQuery;
-import org.flowable.task.api.history.HistoricTaskInstance;
-import org.flowable.task.api.history.HistoricTaskInstanceQuery;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.secure.utils.AuthUtil;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.DateUtil;
 import org.springblade.core.tool.utils.Func;
-import org.springblade.mdm.flow.constants.FlowContants;
 import org.springblade.mdm.flow.entity.FlowProgramFile;
-import org.springblade.mdm.flow.entity.MdmFlowProcess;
 import org.springblade.mdm.flow.mapper.DoneMapper;
-import org.springblade.mdm.flow.util.MdmFlowCache;
 import org.springblade.mdm.flow.vo.DoneQueryVO;
 import org.springblade.mdm.flow.vo.FlowVO;
-import org.springblade.system.feign.IUserClient;
-import org.springblade.system.pojo.entity.User;
 import org.springframework.stereotype.Service;
 
-import java.time.LocalDate;
-import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -51,11 +35,7 @@
 	private final TaskService taskService;
 	/**
 	 * 鏌ヨ鐢ㄦ埛宸插姙浠诲姟鍒嗛〉鍒楄〃
-	 * @param page
-	 * @param s
-	 * @param createTimeBegin
-	 * @param createTimeEnd
-	 * @param keyword
+	 * @param queryVO 鏌ヨ鍙傛暟
 	 * @return
  	 */
 	//public IPage<FlowVO> selectDonePage(IPage<FlowVO> page, LocalDateTime createTimeBegin, LocalDateTime createTimeEnd, String keyword) {
@@ -82,8 +62,8 @@
 				boolean active = flowCommonService.isProcessInstanceActive(flowVO.getProcessInstanceId());
 				flowVO.setProcessIsFinished((Func.toStr(!active)));
 				 */
-				if(Func.toBoolean(flowVO.getProcessIsFinished())){
-					flowVO.setFlag(getCurrentTaskDefKeys(flowVO.getProcessInstanceId()));
+				if(!Func.toBoolean(flowVO.getProcessIsFinished())){
+					flowVO.setCurrentTaskKeys(getCurrentTaskDefKeys(flowVO.getProcessInstanceId()));
 				}
 			});
 		}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/WIthdrawService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/WIthdrawService.java
index 85526e3..177b64e 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/WIthdrawService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/WIthdrawService.java
@@ -5,7 +5,9 @@
 import org.flowable.engine.repository.ProcessDefinition;
 import org.flowable.engine.runtime.ProcessInstance;
 import org.flowable.task.api.Task;
+import org.springblade.core.launch.constant.FlowConstant;
 import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.mdm.flow.constants.FlowContants;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -45,23 +47,7 @@
 		String taskId = getCurrentTaskIdByProcessInstanceId(processInstanceId);
 		backWithAssigneeService.backToTaskWithNewAssignee(taskId,targetActivityId,targetAssignee,"娴佺▼鎾ゅ洖",new HashMap<>());
 	}
-/*
-	String getprocessDefinitionKey(String processInstanceId){
-		Task task = taskService.createTaskQuery()
-			.taskId(taskId)
-			.singleResult();
 
-		ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
-			.processDefinitionId(task.getProcessDefinitionId())
-			.singleResult();
-
-		String taskId = getCurrentTaskIdByProcessInstanceId(processInstanceId);
-		if (processDefinition == null) {
-			throw new RuntimeException("娴佺▼瀹氫箟涓嶅瓨鍦紝processDefinitionId: " + task.getProcessDefinitionId());
-		}
-
-		return processDefinition.getKey();
-	}*/
 
 	public String getCurrentTaskIdByProcessInstanceId(String processInstanceId) {
 		Optional<String> optTaskId = taskService.createTaskQuery()
@@ -96,6 +82,18 @@
 
 		return processDefinition.getKey();
 	}
+
+	/**
+	 * 鍙栧洖鍒扮粍闀挎淳宸�
+	 * @param processInstanceId
+	 */
+    public void takeBackToDispatch(String processInstanceId) {
+		String targetAssignee = ""+AuthUtil.getUserId();
+
+		final String targetActivityId = "teamLeaderTask";//缁勯暱娲惧伐
+		String taskId = getCurrentTaskIdByProcessInstanceId(processInstanceId);
+		backWithAssigneeService.backToTaskWithNewAssignee(taskId,targetActivityId,targetAssignee,"缁勯暱鍙栧洖",new HashMap<>());
+    }
 }
 
 
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/FlowVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/FlowVO.java
index ada241f..a03f7cd 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/FlowVO.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/FlowVO.java
@@ -167,6 +167,10 @@
 	 */
 	private String flag;
 	/**
+	 * 鏄惁閫氳繃浠e彿
+	 */
+	private String currentTaskKeys;
+	/**
 	 * 寮�濮嬫煡璇㈡棩鏈�
 	 */
 	private Date beginDate;
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/utils/WordReplaceUtil.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/utils/WordReplaceUtil.java
index 3711446..ef7ba66 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/utils/WordReplaceUtil.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/utils/WordReplaceUtil.java
@@ -50,6 +50,9 @@
 					for (Map.Entry<String, String> entry : data.entrySet()) {
 						String placeholder = entry.getKey();
 						String replacement = entry.getValue();
+						if(replacement==null) {
+							replacement = "";
+						}
 						if (text.contains(placeholder)) {
 							text = text.replace(placeholder, replacement);
 							run.setText(text, 0);
@@ -68,12 +71,14 @@
 				for (Map.Entry<String, String> entry : data.entrySet()) {
 					String placeholder = entry.getKey();
 					String replacement = entry.getValue();
-					if(replacement!=null) {
-						if (text.contains(placeholder)) {
-							text = text.replace(placeholder, replacement);
-							run.setText(text, 0);
-						}
+					if(replacement==null) {
+						replacement = "";
 					}
+					if (text.contains(placeholder)) {
+						text = text.replace(placeholder, replacement);
+						run.setText(text, 0);
+					}
+
 				}
 			}
 		}
@@ -96,12 +101,15 @@
 								for (Map.Entry<String, String> entry : data.entrySet()) {
 									String placeholder = entry.getKey();
 									String replacement = entry.getValue();
-									if(replacement!=null) {
-										if (text.contains(placeholder)) {
-											text = text.replace(placeholder, replacement);
-											run.setText(text, 0);
-										}
+									if(replacement==null) {
+										replacement = "";
 									}
+
+									if (text.contains(placeholder)) {
+										text = text.replace(placeholder, replacement);
+										run.setText(text, 0);
+									}
+
 								}
 							}
 						}

--
Gitblit v1.9.3