From 51054f0da5dd4718212064510fff045815388b90 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期三, 20 八月 2025 16:31:03 +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/TempFlowCompleteService.java |   58 +++++++++++++++++++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/service/EmailService.java                 |   44 --------------
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/StartDispatcher.java                |   40 ++++++++-----
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/utils/ProgramFileNameCheckUtil.java               |    2 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/TryFlowCompleteService.java  |    2 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/MyTestController.java                        |    3 
 7 files changed, 95 insertions(+), 65 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/service/EmailService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/service/EmailService.java
index 174afa2..cd781f3 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/service/EmailService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/service/EmailService.java
@@ -15,49 +15,5 @@
 @Service
 @Slf4j
 public class EmailService {
-	@Autowired
-	private JavaMailSender mailSender;
 
-	public void sendSimpleEmail(String to, String subject, String text) {
-		SimpleMailMessage message = new SimpleMailMessage();
-		message.setTo(to);
-		message.setSubject(subject);
-		message.setText(text);
-		message.setFrom("zhangxiaoxu@qianwen.ltd");
-
-		mailSender.send(message);
-		log.info("Simple email sent to: {}", to);
-	}
-
-	public void sendHtmlEmail(String to, String subject, String htmlContent)
-		throws MessagingException {
-		MimeMessage message = mailSender.createMimeMessage();
-		MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
-
-		helper.setTo(to);
-		helper.setSubject(subject);
-		helper.setText(htmlContent, true); // true 琛ㄧず HTML 鍐呭
-		helper.setFrom("zhangxiaoxu@qianwen.ltd");
-
-		mailSender.send(message);
-		log.info("HTML email sent to: {}", to);
-	}
-
-	public void sendEmailWithAttachment(String to, String subject, String text,
-										File attachment) throws MessagingException {
-		MimeMessage message = mailSender.createMimeMessage();
-		MimeMessageHelper helper = new MimeMessageHelper(message, true);
-
-		helper.setTo(to);
-		helper.setSubject(subject);
-		helper.setText(text);
-		helper.setFrom("noreply@example.com");
-
-		// 娣诲姞闄勪欢
-		FileSystemResource file = new FileSystemResource(attachment);
-		helper.addAttachment(attachment.getName(), file);
-
-		mailSender.send(message);
-		log.info("Email with attachment sent to: {}", to);
-	}
 }
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 fd1b8aa..5382be2 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
@@ -39,6 +39,7 @@
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -61,6 +62,7 @@
 	private final TaskDispatchService taskDispatchService;
 	private final BatchDispatchService dispatchService;
 	private final ReplaceFlowCompleteService replaceFlowCompleteService;
+	private final TempFlowCompleteService tempFlowCompleteService;
 	/**
 	 * 鍙戣捣娲惧伐娴佺▼
 	 */
@@ -79,10 +81,15 @@
 	}
 
 	AbstractFlowCompleteService getActualService(String processInstanceId){
-		ProcessInstance inst = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
+		ProcessInstance inst = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).includeProcessVariables().singleResult();
 		if(inst.getProcessDefinitionKey().equals(FlowContants.TRY_PROCESS_KEY) || inst.getProcessDefinitionKey().equals(FlowContants.CURE_PROCESS_KEY)
 			|| inst.getProcessDefinitionKey().equals(FlowContants.UNLOCK_PROCESS_KEY)){
-			return tryFlowCompleteService;
+			String isTempFlow = Func.toStr(inst.getProcessVariables().get(FlowContants.IS_TEMP_FLOW));
+			if(FlowContants.N.equals(isTempFlow)){
+				return tryFlowCompleteService;
+			}else{
+				return tempFlowCompleteService;
+			}
 		}else if(inst.getProcessDefinitionKey().equals(FlowContants.REPLACE_PROCESS_KEY)){
 			return replaceFlowCompleteService;
 		}else{
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/StartDispatcher.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/StartDispatcher.java
index 4aa863c..b183be4 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/StartDispatcher.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/StartDispatcher.java
@@ -57,7 +57,7 @@
 		vars.put(FlowContants.TITLE,startVO.getTitle());
 
 		//涓存椂娴佺▼鏍囧織锛屾槑纭寚瀹歒锛屽睘浜庝复鏃舵祦绋�
-		vars.put(FlowContants.IS_TEMP_FLOW,FlowContants.Y.equals(startVO.getIsTempFlow())?FlowContants.Y:FlowContants.N);
+
 		//鏈哄簥缂栧彿
 		vars.put(FlowContants.MACHINE_CODE,startVO.getMachineCode());
 		String workshop = nodeDeptQueryService.getWorkshopNameByMachineCode(startVO.getMachineCode());
@@ -81,25 +81,35 @@
 		String programPkgName = NcNodeService.genProgramName(startVO.getDrawingNo(),startVO.getProcessNo());
 		vars.put(FlowContants.PROGRAM_PACKAGE_NAME,programPkgName);
 
-		NcNode curedProgramPackage = ncNodeService.getCuredProgramPackage(programPkgName,startVO.getMachineCode());
-		//璁剧疆鏄惁鏈夊浐鍖栫▼搴忔爣璁�
-		vars.put(FlowContants.HAS_CURED_PROGRAM,curedProgramPackage != null ? FlowContants.Y:FlowContants.N);
-		//宸ュ簭鐗堟鏄惁涓�鑷达紝鏄惁鍦ㄦ湁鏁堟湡鍐�
-		if(curedProgramPackage != null && Func.isBlank(startVO.getDeviation())){//鍋忕鍗曚紭鍏堬紝濡傛灉鏈夊亸绂诲崟锛岄偅涔堟壘鍒板浐鍖栫▼搴忕殑涔熶笉绠楀浐鍖栦簡
-			vars.put(FlowContants.CURED_NODE_ID,curedProgramPackage.getId());
-			vars.put(FlowContants.IS_PROCESS_EDITION_SAME, StringUtils.equals(curedProgramPackage.getProcessEdition(),startVO.getProcessEdition()) ? "Y":"N");
-			vars.put(FlowContants.VALIDITY_PERIOD, curedProgramPackage.withinValidityPeriod() ? FlowContants.Y:FlowContants.N);
+		vars.put(FlowContants.IS_TEMP_FLOW,FlowContants.Y.equals(startVO.getIsTempFlow())?FlowContants.Y:FlowContants.N);
+		NcNode curedProgramPackage = null;
+		if(FlowContants.N.equals(startVO.getIsTempFlow())) {
+			curedProgramPackage = ncNodeService.getCuredProgramPackage(programPkgName, startVO.getMachineCode());
+			//璁剧疆鏄惁鏈夊浐鍖栫▼搴忔爣璁�
+			vars.put(FlowContants.HAS_CURED_PROGRAM, curedProgramPackage != null ? FlowContants.Y : FlowContants.N);
+			//宸ュ簭鐗堟鏄惁涓�鑷达紝鏄惁鍦ㄦ湁鏁堟湡鍐�
+			if (curedProgramPackage != null && Func.isBlank(startVO.getDeviation())) {//鍋忕鍗曚紭鍏堬紝濡傛灉鏈夊亸绂诲崟锛岄偅涔堟壘鍒板浐鍖栫▼搴忕殑涔熶笉绠楀浐鍖栦簡
+				vars.put(FlowContants.CURED_NODE_ID, curedProgramPackage.getId());
+				vars.put(FlowContants.IS_PROCESS_EDITION_SAME, StringUtils.equals(curedProgramPackage.getProcessEdition(), startVO.getProcessEdition()) ? "Y" : "N");
+				vars.put(FlowContants.VALIDITY_PERIOD, curedProgramPackage.withinValidityPeriod() ? FlowContants.Y : FlowContants.N);
+			} else {
+				vars.put(FlowContants.IS_PROCESS_EDITION_SAME, FlowContants.Y);
+				vars.put(FlowContants.VALIDITY_PERIOD, FlowContants.Y);
+			}
+
 		}else{
-			vars.put(FlowContants.IS_PROCESS_EDITION_SAME, FlowContants.Y);
-			vars.put(FlowContants.VALIDITY_PERIOD, FlowContants.Y);
+			//涓存椂娴佺▼锛屼笉绠″浐鍖�
+			vars.put(FlowContants.HAS_CURED_PROGRAM,FlowContants.N);
 		}
 		String myProcessName = "璇曞垏涓嬪彂娴佺▼";
-		if(vars.getOrDefault(FlowContants.HAS_CURED_PROGRAM,FlowContants.N).equals(FlowContants.Y)){
+		if(vars.getOrDefault(FlowContants.IS_TEMP_FLOW,FlowContants.N).equals(FlowContants.Y)){
+			myProcessName = "璇曞垏琛ュ厖娴佺▼";
+		}else if(StringUtils.isNotBlank(startVO.getDeviation()) ){
+			myProcessName = "鍋忕鍗�";
+		}else if(vars.getOrDefault(FlowContants.HAS_CURED_PROGRAM,FlowContants.N).equals(FlowContants.Y)){
 			myProcessName = "鍥哄寲涓嬪彂娴佺▼";
 		}
-		if(StringUtils.isNotBlank(startVO.getDeviation()) ){
-			myProcessName = "鍋忕鍗�";
-		}
+
 		vars.put(FlowContants.MY_PROCESS_NAME, myProcessName);
 
 		String businessKey = "0";//涓氬姟琛╧ey
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/TempFlowCompleteService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/TempFlowCompleteService.java
new file mode 100644
index 0000000..025b960
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/TempFlowCompleteService.java
@@ -0,0 +1,58 @@
+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("tempFlowCompleteService")
+public class TempFlowCompleteService extends AbstractFlowCompleteService {
+	@Autowired
+	private FlowProgramFileService flowProgramFileService;
+	@Autowired
+	private NcNodeService ncNodeService;
+	@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 (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);
+
+		taskService.complete(taskId, variables);
+	}
+
+
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/TryFlowCompleteService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/TryFlowCompleteService.java
index 1819d08..da3e7e0 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/TryFlowCompleteService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/TryFlowCompleteService.java
@@ -42,7 +42,7 @@
 		String operateResult = this.getApproveResult(variables);
 
 		if(task.getTaskDefinitionKey().equals("programmingTask")) {//缂栧埗鑺傜偣
-			flowProgramFileService.checkProgramFiles(processInstanceId,"Y".equals(operateResult));
+			flowProgramFileService.checkProgramFiles(processInstanceId,FlowContants.Y.equals(operateResult));
 		}
 		if (StringUtil.isNoneBlank(processInstanceId, comment)) {
 			taskService.addComment(taskId, processInstanceId, comment);
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/MyTestController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/MyTestController.java
index 6c9f0d1..353a355 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/MyTestController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/MyTestController.java
@@ -109,8 +109,7 @@
 	@GetMapping("/sendmail")
 	@Operation(summary = "sendmail", description = "sendmail")
 	public R<Void> sendmail(String code) throws IOException, MessagingException {
-		mailService.sendHtmlEmail("zhangxiaoxu@qianwen.ltd","testtitle"+code,"abc鐑︾儲鐑�");
-		mailService.sendHtmlEmail("y_ys79@sina.com","testtitle"+code,"abc鐑︾儲鐑�");
+
 		return R.success();
 	}
 
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/utils/ProgramFileNameCheckUtil.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/utils/ProgramFileNameCheckUtil.java
index ccd0cff..b563da7 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/utils/ProgramFileNameCheckUtil.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/utils/ProgramFileNameCheckUtil.java
@@ -15,7 +15,7 @@
 	 * @param programProperties 绋嬪簭灞炴�э紝鍙戣捣鏃跺~鍐欑殑
 	 */
 	public static void checkFilename(String filename, FlowProgramProperties programProperties){
-		if(FlowContants.IS_TEMP_FLOW.equals(programProperties.getIsTempFlow())){
+		if(FlowContants.Y.equals(programProperties.getIsTempFlow())){
 			//涓存椂绋嬪簭涓嬪彂娴佺▼锛屼笉妫�鏌ユ枃浠跺悕鍚堟硶鎬�
 			return;
 		}

--
Gitblit v1.9.3