From 4988082dcafba6a928aab186ae18a8da3e16795e Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期一, 18 八月 2025 12:00:55 +0800
Subject: [PATCH] 替换流程发起,增加文件校验
---
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchController.java | 11 +--
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/ReplaceFlowCompleteService.java | 65 +++++++++++++++++++++
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ReplaceFlowService.java | 47 ++++++---------
3 files changed, 88 insertions(+), 35 deletions(-)
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchController.java
index b50fa52..fd1b8aa 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchController.java
@@ -26,10 +26,7 @@
import org.springblade.mdm.flow.service.FlowCommonService;
import org.springblade.mdm.flow.service.FlowProgramFileService;
import org.springblade.mdm.flow.service.TaskDispatchService;
-import org.springblade.mdm.flow.service.execute.AbstractFlowCompleteService;
-import org.springblade.mdm.flow.service.execute.BatchDispatchService;
-import org.springblade.mdm.flow.service.execute.DefaultFlowCompleteService;
-import org.springblade.mdm.flow.service.execute.TryFlowCompleteService;
+import org.springblade.mdm.flow.service.execute.*;
import org.springblade.mdm.flow.vo.BatchDispatchVO;
import org.springblade.mdm.flow.vo.TaskAssignVO;
import org.springblade.mdm.program.entity.ProcessProgRef;
@@ -63,7 +60,7 @@
private final DefaultFlowCompleteService defaultFlowCompleteService;
private final TaskDispatchService taskDispatchService;
private final BatchDispatchService dispatchService;
-
+ private final ReplaceFlowCompleteService replaceFlowCompleteService;
/**
* 鍙戣捣娲惧伐娴佺▼
*/
@@ -84,8 +81,10 @@
AbstractFlowCompleteService getActualService(String processInstanceId){
ProcessInstance inst = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
if(inst.getProcessDefinitionKey().equals(FlowContants.TRY_PROCESS_KEY) || inst.getProcessDefinitionKey().equals(FlowContants.CURE_PROCESS_KEY)
- || inst.getProcessDefinitionKey().equals(FlowContants.REPLACE_PROCESS_KEY)|| inst.getProcessDefinitionKey().equals(FlowContants.UNLOCK_PROCESS_KEY)){
+ || inst.getProcessDefinitionKey().equals(FlowContants.UNLOCK_PROCESS_KEY)){
return tryFlowCompleteService;
+ }else if(inst.getProcessDefinitionKey().equals(FlowContants.REPLACE_PROCESS_KEY)){
+ return replaceFlowCompleteService;
}else{
return defaultFlowCompleteService;
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ReplaceFlowService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ReplaceFlowService.java
index 5b475ee..d3123a6 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ReplaceFlowService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ReplaceFlowService.java
@@ -109,6 +109,7 @@
*/
@Transactional
public void start(ReplaceFlowStartVO startVO){
+ flowProgramFileService.checkProgramFiles(startVO.getTempInstanceId(),true);
NcNode programPackage = nodeService.getById(startVO.getNodeId());
Map<String, Object> vars = new HashMap<>();
@@ -117,29 +118,7 @@
flowCommonService.putDefaultAssignees(vars,programPackage.getDrawingNo(),startVO.getAssignee()+"");
vars.put(FlowContants.TITLE,startVO.getTitle());
- //浠ヤ笅琚玣lowCommonService.putFlowVariablesByNode(vars,programPackage);浠f浛浜�
- /*
- //鏈哄簥缂栧彿
- vars.put(FlowContants.MACHINE_CODE,programPackage.getMachineCode());
- Machine machine = machineService.getByCode(programPackage.getMachineCode());
- //鏈哄簥鍨嬪彿
- if(machine != null) {
- vars.put(FlowContants.MACHINE_MODE, machine.getName());
- }
- vars.put(FlowContants.PROCESS_NO,programPackage.getProcessNo());
- vars.put(FlowContants.PROCESS_NAME,programPackage.getProcessName());
- vars.put(FlowContants.PROCESS_EDITION,programPackage.getProcessEdition());
- vars.put(FlowContants.CRAFT_EDITION,programPackage.getCraftEdition());
- vars.put(FlowContants.DRAWING_NO,programPackage.getDrawingNo());
- vars.put(FlowContants.DRAWING_NO_EDITION,programPackage.getDrawingNoEdition());
-
- vars.put(FlowContants.PROGRAM_PACKAGE_NAME,programPackage.getName());
-
- vars.put(FlowContants.PRODUCT_MODEL,programPackage.getProductModel());
- vars.put(FlowContants.NODE_ID, startVO.getNodeId());
- vars.put(FlowContants.WORKSHOP,nodeDeptQueryService.getWorkshopNameByMachineCode(programPackage.getMachineCode()));
- */
vars.put("comment", startVO.getComment());
vars.put(FlowContants.MY_PROCESS_NAME,"鏇挎崲娴佺▼");
identityService.setAuthenticatedUserId(String.valueOf(AuthUtil.getUserId()));//璁剧疆娴佺▼鍙戣捣浜�
@@ -147,21 +126,31 @@
//鏇存柊鑺傜偣鐨勬祦绋媔d锛岄伩鍏嶉噸澶嶅彂璧锋祦绋�
programPackage.setProcessInstanceId(inst.getId());
this.nodeService.updateById(programPackage);
- /*
- Task startTask = taskService.createTaskQuery()
- .processInstanceId(inst.getId())
- .singleResult();
- // 娣诲姞璇勮
- taskService.addComment(startTask.getId(), inst.getProcessInstanceId(),startVO.getComment());
- */
flowProgramFileService.lambdaUpdate()
.eq(FlowProgramFile::getProcessInstanceId,startVO.getTempInstanceId())
.set(FlowProgramFile::getProcessInstanceId,inst.getProcessInstanceId()).update();
}
+ /*
+ public void checkProgramFiles(String processInstanceId,boolean isPass) {
+ List<FlowProgramFile> flowPrograms = this.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId, processInstanceId).orderByAsc(FlowProgramFile::getCreateTime).list();
+ List<FlowProgramFile> purePrograms = flowPrograms.stream().filter(FlowProgramFile::isProgram).toList();
+ if(isPass && purePrograms.isEmpty()){
+ throw new ServiceException("璇蜂笂浼犵▼搴忔枃浠�");
+ }
+ int totalSeg = 0;
+ if(!purePrograms.isEmpty()){
+ FlowProgramFile progFile = purePrograms.get(0);
+ totalSeg = ProgramFileNameCheckUtil.getProgramSegCount(progFile.getName());
+ }
+ if(totalSeg != purePrograms.size()){
+ throw new ServiceException("搴斾笂浼�"+totalSeg+"娈电▼搴忥紝瀹為檯涓婁紶"+flowPrograms.size()+"娈�");
+ }
+
+ }*/
/**
* 涓婁紶绋嬪簭寰愭枃浠讹紙缂栧埗鑺傜偣璋冪敤锛�
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/ReplaceFlowCompleteService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/ReplaceFlowCompleteService.java
new file mode 100644
index 0000000..cd65752
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/ReplaceFlowCompleteService.java
@@ -0,0 +1,65 @@
+package org.springblade.mdm.flow.service.execute;
+
+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.flow.constants.FlowContants;
+import org.springblade.mdm.flow.service.FlowCommonService;
+import org.springblade.mdm.flow.service.FlowProgramFileService;
+import org.springblade.mdm.flow.service.FlowProgramProperties;
+import org.springblade.mdm.program.service.NcNodeAutoCreateService;
+import org.springblade.mdm.program.service.NcNodeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Map;
+
+/**
+ * 鏇挎崲娴佺▼瀹屾垚浠诲姟鐨勫疄鐜�
+ */
+@Service("repalceFlowCompleteService")
+public class ReplaceFlowCompleteService extends AbstractFlowCompleteService {
+ @Autowired
+ private FlowProgramFileService flowProgramFileService;
+ @Autowired
+ private NcNodeService ncNodeService;
+ @Autowired
+ private NcNodeAutoCreateService ncNodeAutoCreateService;
+ @Autowired
+ private FlowCommonService flowCommonService;
+
+ @Transactional
+ @Override
+ public void completeTask(String taskId, String processInstanceId, String comment, Map<String, Object> variables) {
+ Task task = currentTask(taskId);
+ String operateResult = this.getApproveResult(variables);
+
+ if(task.getTaskDefinitionKey().equals("repalceProgrammingTask")) {//缂栧埗鑺傜偣
+ flowProgramFileService.checkProgramFiles(processInstanceId,"Y".equals(operateResult));
+ }
+ if (StringUtil.isNoneBlank(processInstanceId, comment)) {
+ taskService.addComment(taskId, processInstanceId, comment);
+ }
+ // 闈炵┖鍒ゆ柇
+ if (Func.isEmpty(variables)) {
+ variables = Kv.create();
+ }
+ variables.put(FlowContants.LAST_STEP_USER_NICKNAME, AuthUtil.getNickName());
+
+ if(!variables.containsKey("assignee")) {
+ throw new ServiceException("璇锋寚瀹氭祦绋嬩笅涓�姝ュ鐞嗕汉");
+ }
+ addApproveRecord(taskId,comment,variables);
+
+ variables.remove(FlowContants.PROCESS_EDITION);//涓嶈鍗囩増浜�
+
+
+ taskService.complete(taskId, variables);
+ }
+
+
+}
--
Gitblit v1.9.3