From 432198337fb3d8a99fadb4b7825771d68bb10b9e Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期三, 20 八月 2025 19:58:22 +0800
Subject: [PATCH] 去掉mail依赖

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/BatchDispatchService.java |  172 ++++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 138 insertions(+), 34 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/BatchDispatchService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/BatchDispatchService.java
index 4a5d95d..c319676 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/BatchDispatchService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/BatchDispatchService.java
@@ -1,14 +1,19 @@
 package org.springblade.mdm.flow.service.execute;
 
 import org.apache.commons.lang3.StringUtils;
+import org.flowable.engine.RuntimeService;
 import org.flowable.engine.TaskService;
+import org.flowable.engine.runtime.ProcessInstance;
 import org.flowable.task.api.Task;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.tool.support.Kv;
 import org.springblade.core.tool.utils.StringUtil;
 import org.springblade.mdm.flow.constants.FlowContants;
+import org.springblade.mdm.flow.constants.FlowVariableContants;
 import org.springblade.mdm.flow.service.ApproveRecordService;
+import org.springblade.mdm.flow.service.FlowCommonService;
 import org.springblade.mdm.flow.service.FlowProgramFileService;
+import org.springblade.mdm.flow.vo.BatchDispatchVO;
 import org.springblade.mdm.program.service.NcNodeAutoCreateService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -26,51 +31,150 @@
 	private ApproveRecordService approveRecordService;
 	@Autowired
 	private TaskService taskService;
+	@Autowired
+	private RuntimeService runtimeService;
+	@Autowired
+	private FlowCommonService flowCommonService;
 	@Transactional
-	public void batchCompleteTask(String[] taskIds, String[] processInstanceIds, String comment,String assignee) {
-		if(StringUtils.isBlank(assignee)){
+	public void batchDispatchTask(BatchDispatchVO batchDispatchVO) {
+		//String[] taskIds, String[] processInstanceIds, String comment, String assignee
+		if(StringUtils.isBlank(batchDispatchVO.getAssignee())){
 			throw new ServiceException("缂哄皯澶勭悊浜哄弬鏁�");
 		}
+		checkBatchParameter(batchDispatchVO);
+
+		Map<String, Object> variables = Kv.create();
+		variables.put("assignee", batchDispatchVO.getAssignee());
+		variables.put("approve", FlowContants.Y);//榛樿灏辨槸閫氳繃
+		String taskId;
+		String processInstanceId;
+		String comment = batchDispatchVO.getComment();
+		String[] taskIds = batchDispatchVO.getTaskIds();
+		for(int i=0;i<taskIds.length;i++){
+			taskId = taskIds[i];
+			processInstanceId = batchDispatchVO.getProcessInstanceIds()[i];
+
+			Task task = getTask(taskId);
+
+			if (StringUtil.isNoneBlank(processInstanceId, comment)) {
+				taskService.addComment(taskId, processInstanceId, comment);
+			}
+			approveRecordService.saveApproveRecords(task,FlowContants.Y,comment);
+
+			taskService.complete(taskId, variables);
+		}
+	}
+
+	/**
+	 * 鑷姩鎵归噺娲惧伐
+	 * @param batchDispatchVO 鎵归噺澶勭悊鍙傛暟
+	 */
+	@Transactional
+	public void batchAutoDispatchTask(BatchDispatchVO batchDispatchVO) {
+		//TODO 寰呭疄鐜�
+		checkBatchParameter(batchDispatchVO);
+		String[] taskIds = batchDispatchVO.getTaskIds();
+		String taskId;
+		String processInstanceId;
+
+		Map<String, Object> variables = Kv.create();
+		//variables.put("assignee", batchDispatchVO.getAssignee());
+		variables.put("approve", FlowContants.Y);//鑷姩鍒嗘淳榛樿灏辨槸閫氳繃
+		variables.put(FlowVariableContants.COMMENT,batchDispatchVO.getComment());
+		ProcessInstance processInstance;
+		Object programmer;
+		for(int i=0;i<taskIds.length;i++) {
+			taskId = taskIds[i];
+			processInstanceId = batchDispatchVO.getProcessInstanceIds()[i];
+
+			variables.put("assignee", getAutoProgrammer(processInstanceId));
+
+			Task task = getTask(taskId);
+
+			if (StringUtil.isNoneBlank(processInstanceId, batchDispatchVO.getComment())) {
+				taskService.addComment(taskId, processInstanceId, batchDispatchVO.getComment());
+			}
+			approveRecordService.saveApproveRecords(task,FlowContants.Y,batchDispatchVO.getComment());
+
+			//鏈�鍚庝竴姝ュ畬鎴�
+			taskService.complete(taskId, variables);
+		}
+	}
+
+	private Task getTask(String taskId) {
+		return taskService.createTaskQuery()
+			.taskId(taskId)
+			.singleResult();
+	}
+
+
+	/**
+	 * 鑾峰彇缂栫▼鐨勫伐鑹哄憳id
+	 * @param processInstanceId
+	 * @return
+	 */
+	Object getAutoProgrammer(String processInstanceId){
+		ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().includeProcessVariables()
+			.processInstanceId(processInstanceId)
+			.singleResult();
+		Object programmer = processInstance.getProcessVariables().get(FlowContants.PROGRAMMER);
+		if(programmer == null){
+			throw new ServiceException(processInstance.getProcessVariables().get(FlowContants.TITLE)+":鏈壘鍒扮紪绋嬩汉鍛�");
+		}
+		return programmer;
+	}
+
+	/**
+	 * 楂樺笀鎵归噺瀹℃壒
+	 * @param batchDispatchVO
+	 */
+	@Transactional
+	public void batchApprove(BatchDispatchVO batchDispatchVO) {
+		//TODO 寰呭疄鐜�
+		checkBatchParameter(batchDispatchVO);
+		String[] taskIds = batchDispatchVO.getTaskIds();
+		String taskId;
+		String processInstanceId;
+
+		//瀹℃壒缁撴灉鍜屽鐞嗕汉閮戒竴鏍风殑
+		Map<String, Object> variables = Kv.create();
+		variables.put(FlowVariableContants.APPROVE, batchDispatchVO.getApprove());
+		variables.put(FlowVariableContants.COMMENT, batchDispatchVO.getComment());
+
+		for(int i=0;i<taskIds.length;i++) {
+			taskId = taskIds[i];
+			processInstanceId = batchDispatchVO.getProcessInstanceIds()[i];
+
+			Task task = getTask(taskId);
+
+			if (StringUtil.isNoneBlank(processInstanceId, batchDispatchVO.getComment())) {
+				taskService.addComment(taskId, processInstanceId, batchDispatchVO.getComment());
+			}
+			if(FlowContants.N.equals(batchDispatchVO.getApprove())) {
+				//椹冲洖锛屾煡璇笂涓�姝ュ鐞嗕汉鍘熻矾椹冲洖
+				String assignee = flowCommonService.previusAssignee(processInstanceId);
+				variables.put(FlowVariableContants.ASSIGNEE, assignee);
+			}
+			approveRecordService.saveApproveRecords(task,FlowContants.Y,batchDispatchVO.getComment());
+
+			taskService.complete(taskId, variables);
+		}
+	}
+	/**
+	 * 楠岃瘉鎵归噺澶勭悊鍙傛暟
+	 * @param batchDispatchVO 鎵归噺澶勭悊鍙傛暟瀵硅薄
+	 */
+	void checkBatchParameter(BatchDispatchVO batchDispatchVO){
+		String[] taskIds = batchDispatchVO.getTaskIds();
 		if(taskIds == null || taskIds.length == 0){
 			throw new ServiceException("浠诲姟id缁勪负绌�");
 		}
-
+		String[] processInstanceIds = batchDispatchVO.getProcessInstanceIds();
 		if(processInstanceIds == null || processInstanceIds.length == 0){
 			throw new ServiceException("娴佺▼瀹炰緥id缁勪负绌�");
 		}
 		if(taskIds.length != processInstanceIds.length){
 			throw new ServiceException("浠诲姟id涓庢祦绋嬪疄渚媔d鏁伴噺涓嶄竴鑷�");
 		}
-
-		Map<String, Object> variables = Kv.create();
-		variables.put("assignee", assignee);
-		variables.put("approve", FlowContants.Y);//榛樿灏辨槸閫氳繃
-		String taskId;
-		String processInstanceId;
-		for(int i=0;i<taskIds.length;i++){
-			taskId = taskIds[i];
-			processInstanceId = processInstanceIds[i];
-
-			Task task = taskService.createTaskQuery()
-				.taskId(taskId)
-				.singleResult();
-			taskService.complete(taskId, variables);
-
-			if (StringUtil.isNoneBlank(processInstanceId, comment)) {
-				taskService.addComment(taskId, processInstanceId, comment);
-			}
-
-			approveRecordService.saveApproveRecords(task,FlowContants.Y,comment);
-		}
-	}
-
-	/**
-	 * 鑷姩鎵归噺娲惧伐
-	 * @param taskIds
-	 * @param processInstanceIds
-	 * @param comment
-	 */
-	public void batchAutoCompleteTask(String[] taskIds, String[] processInstanceIds, String comment) {
-		//TODO 甯﹀疄鐜�
 	}
 }

--
Gitblit v1.9.3