From 0975559314f1d4ee44a03e87c2b369f1d3e0ff8b Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期四, 11 九月 2025 11:01:16 +0800
Subject: [PATCH] 修复替换流程bug

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/ReplaceFlowCompleteService.java |   14 +++++--
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ReplaceFlowService.java                 |   25 +++---------
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/thirdpart/controller/MesController.java              |   29 ++++++++++++--
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/thirdpart/vo/MesTaskVO.java                          |    2 +
 blade-service/blade-mdm/src/main/resources/processesbpmn/program-replace.bpmn20.xml                            |    4 +-
 5 files changed, 45 insertions(+), 29 deletions(-)

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 313466b..687a529 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
@@ -11,6 +11,7 @@
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.mdm.basesetting.machine.service.MachineService;
 import org.springblade.mdm.flow.constants.FlowContants;
+import org.springblade.mdm.flow.constants.FlowVariableContants;
 import org.springblade.mdm.flow.entity.FlowProgramFile;
 import org.springblade.mdm.flow.vo.ReplaceFlowStartVO;
 import org.springblade.mdm.flow.vo.ReplaceUploadVO;
@@ -110,7 +111,11 @@
 
 		vars.put("comment", startVO.getComment());
 		vars.put(FlowContants.MY_PROCESS_NAME,"鏇挎崲娴佺▼");
-		identityService.setAuthenticatedUserId(String.valueOf(AuthUtil.getUserId()));//璁剧疆娴佺▼鍙戣捣浜�
+
+		String userId = String.valueOf(AuthUtil.getUserId());
+		identityService.setAuthenticatedUserId(userId);//璁剧疆娴佺▼鍙戣捣浜�
+		vars.put(FlowVariableContants.ACT_PROGRAMMER,userId);//鍙戣捣浜烘寜鐓у疄闄呯紪绋嬩汉鍛樼畻
+
 		ProcessInstance inst = runtimeService.startProcessInstanceByKey(FlowContants.REPLACE_PROCESS_KEY,startVO.getNodeId()+"",vars);
 		//鏇存柊鑺傜偣鐨勬祦绋媔d锛岄伩鍏嶉噸澶嶅彂璧锋祦绋�
 		programPackage.setProcessInstanceId(inst.getId());
@@ -121,25 +126,7 @@
 			.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
index 8bdf942..7747b83 100644
--- 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
@@ -7,6 +7,7 @@
 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.constants.FlowVariableContants;
 import org.springblade.mdm.flow.service.FlowCommonService;
 import org.springblade.mdm.flow.service.FlowProgramFileService;
 import org.springblade.mdm.flow.service.FlowProgramProperties;
@@ -36,18 +37,23 @@
 	@Override
 	public void completeTask(String taskId, String processInstanceId, String comment, Map<String, Object> variables) {
 		Task task = currentTask(taskId);
+
+		// 闈炵┖鍒ゆ柇
+		if (Func.isEmpty(variables)) {
+			variables = Kv.create();
+		}
+
 		String operateResult = this.getApproveResult(variables);
 
 		if(task.getTaskDefinitionKey().equals("replaceProgrammingTask")) {//缂栧埗鑺傜偣
+			variables.put(FlowVariableContants.ACT_PROGRAMMER,Func.toStr(AuthUtil.getUserId()));
+
 			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")) {
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/thirdpart/controller/MesController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/thirdpart/controller/MesController.java
index 4bde6e8..af1cce3 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/thirdpart/controller/MesController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/thirdpart/controller/MesController.java
@@ -6,6 +6,8 @@
 import org.apache.commons.lang3.StringUtils;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.DateUtil;
+import org.springblade.mdm.basesetting.producedivision.entity.QinzheFgb;
+import org.springblade.mdm.basesetting.producedivision.service.QinzheFgbService;
 import org.springblade.mdm.flow.constants.FlowContants;
 import org.springblade.mdm.flow.entity.TaskDispatch;
 import org.springblade.mdm.flow.excution.StartDispatcher;
@@ -15,7 +17,6 @@
 import org.springblade.mdm.thirdpart.service.MesTaskService;
 import org.springblade.mdm.thirdpart.vo.MesTaskFinishVO;
 import org.springblade.mdm.thirdpart.vo.MesTaskVO;
-import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -34,6 +35,8 @@
 	private StartDispatcher dispatcher;
 	@Autowired
 	private TaskDispatchService taskDispatchService;
+	@Autowired
+	private QinzheFgbService qinzheFgbService;
 	/**
 	 * 鏂板
 	 */
@@ -71,7 +74,7 @@
 			}
 			return R.success();
 		}catch (Exception e) {
-			log.error("鎺ユ敹mes浠诲姟澶辫触", e);;
+			log.error("鎺ユ敹mes浠诲姟澶辫触", e);
 			return R.fail(e.getMessage());
 		}
 
@@ -129,7 +132,11 @@
 		taskAssignVO.setMachineCode(mesTaskVO.getEquipmentCode());
 		taskAssignVO.setMachineMode(mesTaskVO.getEquipmentModel());
 		taskAssignVO.setDispatchBy(mesTaskVO.getDspatchBy());
-
+		if (mesTaskVO.getProductModel() != null) {
+			taskAssignVO.setProductModel(mesTaskVO.getProductModel());
+		}else{
+			taskAssignVO.setProductModel(this.queryProductModel(mesTaskVO.getDrawingCode()));
+		}
 		try {
 			taskAssignVO.setPlanStartTime(DateUtil.fromDate(DateUtil.parse(mesTaskVO.getPlanStartTime(),"yyyy-MM-dd HH:mm:ss")).toLocalDate());
 		}catch(Exception e){
@@ -139,6 +146,20 @@
 		taskAssignVO.setTitle(taskAssignVO.getDrawingNo()+"-"+taskAssignVO.getProcessNo()+"-"+taskAssignVO.getProcessEdition()+"璁″垝浠诲姟");
 		taskAssignVO.setIsTempFlow(FlowContants.N);
 		return taskAssignVO;
+	}
+
+	/**
+	 * 鏌ヨ浜у搧鍨嬪彿
+	 * @param drawingNo 鍥惧彿
+	 * @return 浜у搧鍨嬪彿
+	 */
+	String queryProductModel(String drawingNo){
+		QinzheFgb fgb = qinzheFgbService.getByLjh(drawingNo);
+		if(fgb!= null){
+			return fgb.getCph();
+		}else{
+			return null;
+		}
 	}
 
 	@PostMapping("/mes-finish-task")
@@ -155,7 +176,7 @@
 			mesTaskService.finishTask(finishTaskVO);
 			return R.success();
 		}catch(Exception e){
-			log.error("鎺ユ敹MES宸ュ簭瀹屾垚淇℃伅澶辫触", e);;
+			log.error("鎺ユ敹MES宸ュ簭瀹屾垚淇℃伅澶辫触", e);
 			return R.fail("鍐呴儴閿欒");
 		}
 
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/thirdpart/vo/MesTaskVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/thirdpart/vo/MesTaskVO.java
index 68e49de..3bba3a1 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/thirdpart/vo/MesTaskVO.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/thirdpart/vo/MesTaskVO.java
@@ -12,6 +12,8 @@
 	private String drawingCode;
 	@Schema(description = "鍥剧焊鐗堟")
 	private String drawingVersion;
+	@Schema(description = "浜у搧鍨嬪彿")
+	private String productModel;
 	@Schema(description = "宸ュ簭鍙�")
 	private String operationCode;
 	@Schema(description = "宸ュ簭鍚嶇О")
diff --git a/blade-service/blade-mdm/src/main/resources/processesbpmn/program-replace.bpmn20.xml b/blade-service/blade-mdm/src/main/resources/processesbpmn/program-replace.bpmn20.xml
index 86b3f78..f64297f 100644
--- a/blade-service/blade-mdm/src/main/resources/processesbpmn/program-replace.bpmn20.xml
+++ b/blade-service/blade-mdm/src/main/resources/processesbpmn/program-replace.bpmn20.xml
@@ -19,7 +19,7 @@
     <sequenceFlow id="sid-ffcf7c0a-7775-45fc-8e0a-368d70522633" sourceRef="repalceCheckTask" targetRef="replaceApprove">
       <conditionExpression>${approve=='Y'}</conditionExpression>
     </sequenceFlow>
-    <sequenceFlow id="sid-c4180f0a-6120-4504-96e3-28ddd7975c15" sourceRef="replaceApprove" targetRef="repalceCheckTask">
+    <sequenceFlow id="sid-c4180f0a-6120-4504-96e3-28ddd7975c15" sourceRef="replaceApprove" targetRef="replaceProgrammingTask">
       <conditionExpression>${approve=='N'}</conditionExpression>
     </sequenceFlow>
     <sequenceFlow id="sid-b78c5f58-0487-4cda-8ed8-0ea581b9e934" sourceRef="repalceCheckTask" targetRef="replaceProgrammingTask">
@@ -68,7 +68,7 @@
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="edge-701c4cc7-5412-4218-9697-cd6f20f6d281" bpmnElement="sid-c4180f0a-6120-4504-96e3-28ddd7975c15">
         <omgdi:waypoint x="60.0" y="-63.75"/>
-        <omgdi:waypoint x="-100.0" y="-70.0"/>
+        <omgdi:waypoint x="-100.0" y="20.0"/>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="edge-7aa67fcc-b2d7-4419-83e5-9f19eb19dfa5" bpmnElement="sid-b78c5f58-0487-4cda-8ed8-0ea581b9e934">
         <omgdi:waypoint x="-125.0" y="-70.0"/>

--
Gitblit v1.9.3