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