From 3907579a69079b5ee462d17799e3995d9cd77fd4 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期三, 17 九月 2025 21:54:38 +0800
Subject: [PATCH] 延时问题
---
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/BatchDispatchService.java | 92 ++++++++++++++++++++++++++++++++++++---------
1 files changed, 73 insertions(+), 19 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 0963e59..85f0557 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
@@ -6,15 +6,15 @@
import org.flowable.engine.runtime.ProcessInstance;
import org.flowable.task.api.Task;
import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.support.Kv;
+import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringUtil;
+import org.springblade.mdm.commons.service.UserCommonService;
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;
import org.springframework.transaction.annotation.Transactional;
@@ -26,15 +26,14 @@
*/
@Service
public class BatchDispatchService {
-
- @Autowired
- private ApproveRecordService approveRecordService;
@Autowired
private TaskService taskService;
@Autowired
private RuntimeService runtimeService;
@Autowired
private FlowCommonService flowCommonService;
+ @Autowired
+ private UserCommonService userCommonService;
@Transactional
public void batchDispatchTask(BatchDispatchVO batchDispatchVO) {
//String[] taskIds, String[] processInstanceIds, String comment, String assignee
@@ -54,12 +53,16 @@
taskId = taskIds[i];
processInstanceId = batchDispatchVO.getProcessInstanceIds()[i];
+ runtimeService.setVariable(processInstanceId,FlowContants.PROGRAMMER_NAME,userCommonService.getUserNameById(Func.toLong(batchDispatchVO.getAssignee())));
+
Task task = getTask(taskId);
+ if(!task.getTaskDefinitionKey().equals("teamLeaderTask")){
+ throw new ServiceException("闈瀃浠诲姟鍒嗘淳]鑺傜偣鐨勪换鍔′笉鑳芥壒閲忔淳宸�");
+ }
if (StringUtil.isNoneBlank(processInstanceId, comment)) {
taskService.addComment(taskId, processInstanceId, comment);
}
- approveRecordService.saveApproveRecords(task,FlowContants.Y,comment);
taskService.complete(taskId, variables);
}
@@ -87,14 +90,20 @@
taskId = taskIds[i];
processInstanceId = batchDispatchVO.getProcessInstanceIds()[i];
- variables.put("assignee", getAutoProgrammer(processInstanceId));
-
Task task = getTask(taskId);
+ if(!task.getTaskDefinitionKey().equals("teamLeaderTask")){
+ throw new ServiceException("闈瀃浠诲姟鍒嗘淳]鑺傜偣鐨勪换鍔′笉鑳芥壒閲忔淳宸�");
+ }
+
+ Object programmerId = getAutoProgrammer(processInstanceId);
+ variables.put("assignee", programmerId);
+
+ runtimeService.setVariable(processInstanceId,FlowContants.PROGRAMMER_NAME,userCommonService.getUserNameById(Func.toLong(programmerId)));
+
if (StringUtil.isNoneBlank(processInstanceId, batchDispatchVO.getComment())) {
taskService.addComment(taskId, processInstanceId, batchDispatchVO.getComment());
}
- approveRecordService.saveApproveRecords(task,FlowContants.Y,batchDispatchVO.getComment());
//鏈�鍚庝竴姝ュ畬鎴�
taskService.complete(taskId, variables);
@@ -107,19 +116,18 @@
.singleResult();
}
-
/**
* 鑾峰彇缂栫▼鐨勫伐鑹哄憳id
* @param processInstanceId
* @return
*/
Object getAutoProgrammer(String processInstanceId){
- ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
+ ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().includeProcessVariables()
.processInstanceId(processInstanceId)
.singleResult();
- Object programmer = processInstance.getProcessVariables().get(FlowContants.PROGRAMMER);
+ Object programmer = processInstance.getProcessVariables().get(FlowVariableContants.PROGRAMMER);
if(programmer == null){
- throw new ServiceException(processInstance.getProcessVariables().get(FlowContants.TITLE)+":鏈壘鍒扮紪绋嬩汉鍛�");
+ throw new ServiceException(processInstance.getProcessVariables().get(FlowVariableContants.TITLE)+":鏈壘鍒扮紪绋嬩汉鍛�");
}
return programmer;
}
@@ -130,7 +138,6 @@
*/
@Transactional
public void batchApprove(BatchDispatchVO batchDispatchVO) {
- //TODO 寰呭疄鐜�
checkBatchParameter(batchDispatchVO);
String[] taskIds = batchDispatchVO.getTaskIds();
String taskId;
@@ -151,14 +158,28 @@
taskService.addComment(taskId, processInstanceId, batchDispatchVO.getComment());
}
if(FlowContants.N.equals(batchDispatchVO.getApprove())) {
- //椹冲洖锛屾煡璇笂涓�姝ュ鐞嗕汉鍘熻矾椹冲洖
- String assignee = flowCommonService.previusAssignee(processInstanceId);
- variables.put(FlowVariableContants.ASSIGNEE, assignee);
+ //椹冲洖锛屾煡璇㈠疄闄呯紪绋嬩汉鍛� 椹冲洖
+ variables.put(FlowVariableContants.ASSIGNEE, getActualProgrammer(processInstanceId));
}
- approveRecordService.saveApproveRecords(task,FlowContants.Y,batchDispatchVO.getComment());
taskService.complete(taskId, variables);
}
+ }
+
+ /**
+ * 鑾峰彇娴佺▼鎵ц涓疄闄呯殑缂栫▼浜哄憳锛堟墽琛屼笂浼犳枃浠剁殑浜猴級
+ * @param processInstanceId 娴佺▼瀹炰緥id
+ * @return 缂栫▼浜哄憳id
+ */
+ Object getActualProgrammer(String processInstanceId){
+ ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().includeProcessVariables()
+ .processInstanceId(processInstanceId)
+ .singleResult();
+ Object actProgrammer = processInstance.getProcessVariables().get(FlowVariableContants.ACT_PROGRAMMER);
+ if(actProgrammer == null){
+ throw new ServiceException(processInstance.getProcessVariables().get(FlowVariableContants.TITLE)+":鏈壘鍒扮紪绋嬩汉鍛�");
+ }
+ return actProgrammer;
}
/**
* 楠岃瘉鎵归噺澶勭悊鍙傛暟
@@ -177,4 +198,37 @@
throw new ServiceException("浠诲姟id涓庢祦绋嬪疄渚媔d鏁伴噺涓嶄竴鑷�");
}
}
+
+ /**
+ * 鎺掔粌閫氳繃鐜板満缂栧埗
+ * @param batchDispatchVO
+ */
+ public void batchProgramOnMachine(BatchDispatchVO batchDispatchVO) {
+ checkBatchParameter(batchDispatchVO);
+ String[] taskIds = batchDispatchVO.getTaskIds();
+ String taskId;
+ String processInstanceId;
+
+ //瀹℃壒缁撴灉鍜屽鐞嗕汉閮戒竴鏍风殑
+ Map<String, Object> variables = Kv.create();
+ variables.put(FlowVariableContants.APPROVE, FlowContants.Y);
+ variables.put(FlowVariableContants.COMMENT, batchDispatchVO.getComment());
+ variables.put(FlowVariableContants.PROGRAM_ON_MACHINE, FlowContants.Y);//鐜板満缂栧埗:鏄�
+ variables.put(FlowVariableContants.ACT_PROGRAMMER, AuthUtil.getUserId()+"");//瀹為檯缂栧埗
+ variables.put(FlowVariableContants.ASSIGNEE,batchDispatchVO.getAssignee());
+ for(int i=0;i<taskIds.length;i++) {
+ taskId = taskIds[i];
+ processInstanceId = batchDispatchVO.getProcessInstanceIds()[i];
+
+ Task task = getTask(taskId);
+ if(!task.getTaskDefinitionKey().equals("programmingTask")){
+ throw new ServiceException("闈炵紪鍒朵换鍔★紝涓嶈兘鎸囧畾鐜板満缂栧埗");
+ }
+ if (StringUtil.isNoneBlank(processInstanceId, batchDispatchVO.getComment())) {
+ taskService.addComment(taskId, processInstanceId, batchDispatchVO.getComment());
+ }
+
+ taskService.complete(taskId, variables);
+ }
+ }
}
--
Gitblit v1.9.3