From 0d61b9bfca526e9c3da2209de8f9f367e76fd013 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期四, 18 九月 2025 18:09:35 +0800
Subject: [PATCH] 修改constant类名

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/events/CureFinishedEvent.java           |   16 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/service/UserCommonService.java                |    5 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/NormalFinishDataHandler.java   |   39 -
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/MesSyncMapper.xml                         |    5 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/TempFlowCompleteService.java     |   11 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowProgramProperties.java               |    2 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/TaskDispatchStatService.java       |   28 -
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowTransferService.java                 |    6 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/thirdpart/controller/MesController.java               |    4 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/constants/FlowVariableConstant.java              |    7 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/vo/NewProgrammingVO.java                   |    3 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/WIthdrawService.java                     |    2 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/DncBackFileMapper.java                 |    8 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/utils/ProgramFileNameCheckUtil.java                   |    4 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchTaskController.java           |    7 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcNode.java                            |    8 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/replace/ReplaceFinishListener.java      |    6 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/MesSyncMapper.java                        |    7 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/task/MesSyncTask.java                                 |   48 ++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/CureFinishOperateTask.java         |   21 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/thirdpart/service/MesTaskService.java                 |    4 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ReplaceFlowService.java                  |   12 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/ReplaceFlowCompleteService.java  |   10 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/ConfirmTablePrintService.java      |   12 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/CureFlowService.java                     |   22 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeAutoCreateService.java          |    9 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/DncBackFileMapper.xml                  |    2 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/props/MesInterfaceProperties.java                |   20 +
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowBusinessService.java                 |   57 +-
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/DataHandlerHelper.java         |    1 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ProgramOnMachineExportService.java       |   21 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/DefaultFlowCompleteService.java  |    7 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/unlock/UnlockFinishListener.java        |    3 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/TaskAssignVO.java                             |    5 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowCommonService.java                   |  107 ++--
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/TodoQueryVO.java                              |    2 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/NewProgrammingStatService.java     |   32 -
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/BatchDispatchService.java        |   40 +-
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExportDNCService.java        |    4 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/CureFlowCompleteService.java     |    9 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/ListenerHelper.java                     |    4 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/LockFlowService.java                     |   18 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/ApproveTableService.java           |    9 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/MyTestController.java                            |   17 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/entity/MesSync.java                              |   98 +++++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/constants/FlowConstant.java                      |    7 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchController.java               |   18 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/MesSyncService.java                      |  143 +++++++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/StartDispatcher.java                    |   88 ++--
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/listeners/CuredEventListener.java       |   53 ++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/CuredProgramStatService.java       |   12 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/ProgramOnMachineExportController.java |   10 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/TryFlowCompleteService.java      |   32 
 53 files changed, 703 insertions(+), 422 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/service/UserCommonService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/service/UserCommonService.java
index 0ef16aa..19067e5 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/service/UserCommonService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/service/UserCommonService.java
@@ -1,17 +1,12 @@
 
 package org.springblade.mdm.commons.service;
 
-import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springblade.core.tool.api.R;
-import org.springblade.mdm.flow.constants.FlowContants;
-import org.springblade.system.feign.ISysClient;
 import org.springblade.system.feign.IUserClient;
 import org.springblade.system.pojo.entity.User;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-
-import java.util.Map;
 
 /**
  * 绯荤粺鍙傛暟鑾峰彇鏈嶅姟
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/constants/FlowContants.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/constants/FlowConstant.java
similarity index 90%
rename from blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/constants/FlowContants.java
rename to blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/constants/FlowConstant.java
index bb41d43..b6ac8fa 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/constants/FlowContants.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/constants/FlowConstant.java
@@ -1,6 +1,6 @@
 package org.springblade.mdm.flow.constants;
 
-public class FlowContants {
+public class FlowConstant {
 
 	public static final String Y = "Y";
 	public static final String N = "N";
@@ -54,8 +54,5 @@
 
 
 
-	/**
-	 * 绋嬪簭缂栧彿
-	 */
-	public static final String PROGRAM_NO = "programNo";
+
 }
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/constants/FlowVariableContants.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/constants/FlowVariableConstant.java
similarity index 96%
rename from blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/constants/FlowVariableContants.java
rename to blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/constants/FlowVariableConstant.java
index 316d06f..839aee8 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/constants/FlowVariableContants.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/constants/FlowVariableConstant.java
@@ -1,6 +1,6 @@
 package org.springblade.mdm.flow.constants;
 
-public class FlowVariableContants {
+public class FlowVariableConstant {
 
 	public static final String PROGRAMMER = "programmer";
 	public static final String COMMENT = "comment";
@@ -142,4 +142,9 @@
 	 * 鐜板満缂栧埗
 	 */
 	public static final String PROGRAM_ON_MACHINE ="programOnMachine";
+
+	/**
+	 * 绋嬪簭缂栧彿
+	 */
+	public static final String PROGRAM_NO = "programNo";
 }
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 3fe8583..2dee5b9 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
@@ -6,17 +6,15 @@
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.flowable.engine.RuntimeService;
-import org.flowable.engine.TaskService;
 import org.flowable.engine.runtime.ProcessInstance;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.tool.api.IResultCode;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
-import org.springblade.mdm.flow.constants.FlowContants;
-import org.springblade.mdm.flow.constants.FlowVariableContants;
+import org.springblade.mdm.flow.constants.FlowConstant;
+import org.springblade.mdm.flow.constants.FlowVariableConstant;
 import org.springblade.mdm.flow.entity.TaskDispatch;
 import org.springblade.mdm.flow.excution.StartDispatcher;
-import org.springblade.mdm.flow.service.FlowProgramFileService;
 import org.springblade.mdm.flow.service.TaskDispatchService;
 import org.springblade.mdm.flow.service.execute.*;
 import org.springblade.mdm.flow.vo.BatchDispatchVO;
@@ -108,17 +106,17 @@
 	 */
 	AbstractFlowCompleteService getActualService(String processInstanceId){
 		ProcessInstance inst = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).includeProcessVariables().singleResult();
-		if(inst.getProcessDefinitionKey().equals(FlowContants.TRY_PROCESS_KEY)
-			|| inst.getProcessDefinitionKey().equals(FlowContants.UNLOCK_PROCESS_KEY)){
-			String isTempFlow = Func.toStr(inst.getProcessVariables().get(FlowVariableContants.IS_TEMP_FLOW));
-			if(FlowContants.N.equals(isTempFlow)){
+		if(inst.getProcessDefinitionKey().equals(FlowConstant.TRY_PROCESS_KEY)
+			|| inst.getProcessDefinitionKey().equals(FlowConstant.UNLOCK_PROCESS_KEY)){
+			String isTempFlow = Func.toStr(inst.getProcessVariables().get(FlowVariableConstant.IS_TEMP_FLOW));
+			if(FlowConstant.N.equals(isTempFlow)){
 				return tryFlowCompleteService;
 			}else{
 				return tempFlowCompleteService;
 			}
-		}else if(inst.getProcessDefinitionKey().equals(FlowContants.CURE_PROCESS_KEY)){
+		}else if(inst.getProcessDefinitionKey().equals(FlowConstant.CURE_PROCESS_KEY)){
 			return cureFlowCompleteService;
-		}else if(inst.getProcessDefinitionKey().equals(FlowContants.REPLACE_PROCESS_KEY)){
+		}else if(inst.getProcessDefinitionKey().equals(FlowConstant.REPLACE_PROCESS_KEY)){
 			return replaceFlowCompleteService;
 		}else{
 			return defaultFlowCompleteService;
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchTaskController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchTaskController.java
index f868532..aed132f 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchTaskController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchTaskController.java
@@ -2,7 +2,6 @@
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -10,19 +9,14 @@
 import org.apache.poi.ss.usermodel.DateUtil;
 import org.flowable.engine.RuntimeService;
 import org.flowable.engine.TaskService;
-import org.flowable.engine.runtime.ProcessInstance;
 import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
-import org.springblade.mdm.basesetting.producedivision.entity.QinzheFgb;
-import org.springblade.mdm.flow.constants.FlowContants;
 import org.springblade.mdm.flow.entity.TaskDispatch;
 import org.springblade.mdm.flow.excution.StartDispatcher;
 import org.springblade.mdm.flow.service.FlowProgramFileService;
 import org.springblade.mdm.flow.service.TaskDispatchService;
 import org.springblade.mdm.flow.service.execute.*;
-import org.springblade.mdm.flow.vo.BatchDispatchVO;
 import org.springblade.mdm.flow.vo.DispathTaskQueryVO;
 import org.springblade.mdm.flow.vo.FlowStartResult;
 import org.springblade.mdm.flow.vo.TaskAssignVO;
@@ -30,7 +24,6 @@
 import org.springframework.web.bind.annotation.*;
 
 import java.time.LocalDateTime;
-import java.util.Map;
 
 @Slf4j
 @RestController
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/ProgramOnMachineExportController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/ProgramOnMachineExportController.java
index ce45ae4..3c9f4df 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/ProgramOnMachineExportController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/ProgramOnMachineExportController.java
@@ -13,7 +13,7 @@
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.DateUtil;
 import org.springblade.core.tool.utils.Func;
-import org.springblade.mdm.flow.constants.FlowVariableContants;
+import org.springblade.mdm.flow.constants.FlowVariableConstant;
 import org.springblade.mdm.flow.service.FlowCommonService;
 import org.springblade.mdm.flow.service.ProgramOnMachineExportService;
 import org.springblade.mdm.flow.service.TaskDispatchService;
@@ -62,10 +62,10 @@
 		page.getRecords().forEach(record -> {
 			ProgramOnMachineExcel excel = new ProgramOnMachineExcel();
 			Map<String,Object> vars = record.getVariables();
-			excel.setDrawingNo(Func.toStr(vars.get(FlowVariableContants.DRAWING_NO)));
-			excel.setProcessNo(Func.toStr(vars.get(FlowVariableContants.PROCESS_NO)));
-			excel.setProcessEdition(Func.toStr(vars.get(FlowVariableContants.PROCESS_EDITION)));
-			excel.setMachineCode(Func.toStr(vars.get(FlowVariableContants.MACHINE_CODE)));
+			excel.setDrawingNo(Func.toStr(vars.get(FlowVariableConstant.DRAWING_NO)));
+			excel.setProcessNo(Func.toStr(vars.get(FlowVariableConstant.PROCESS_NO)));
+			excel.setProcessEdition(Func.toStr(vars.get(FlowVariableConstant.PROCESS_EDITION)));
+			excel.setMachineCode(Func.toStr(vars.get(FlowVariableConstant.MACHINE_CODE)));
 			excel.setProcessInstanceId(record.getProcessInstanceId());
 			list.add(excel);
 		});
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/entity/MesSync.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/entity/MesSync.java
new file mode 100644
index 0000000..16b8224
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/entity/MesSync.java
@@ -0,0 +1,98 @@
+
+package org.springblade.mdm.flow.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 瀹炰綋绫�
+ *
+ * @author Chill
+ */
+@Data
+@TableName("mdm_mes_sync")
+@Schema(description = "MES鍚屾鏁版嵁")
+public class MesSync implements Serializable {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 鐘舵�侊細鍒濆鍏ュ簱
+	 */
+	public static final int STATUS_CREATED = 1;
+
+	/**
+	 * 鐘舵�侊細鍚屾鎴愬姛
+	 */
+	public static final int STATUS_SUCCESS = 2;
+	/**
+	 * 鐘舵�侊細鍚屾澶辫触
+	 */
+	public static final int STATUS_FAILED = 3;
+	/**
+	 * 涓婚敭
+	 */
+	@JsonSerialize(using = ToStringSerializer.class)
+	@Schema(description = "涓婚敭")
+	@TableId(value = "id", type = IdType.ASSIGN_ID)
+	private Long id;
+
+	/**
+	 * 绉熸埛ID
+	 */
+	@Schema(description = "宸ュ簭鍞竴鐮�")
+	private String operationId;
+
+	/**
+	 * 鐖朵富閿�
+	 */
+	@JsonSerialize(using = ToStringSerializer.class)
+	@Schema(description = "绋嬪簭缂栧彿")
+	private String programNo;
+
+	/**
+	 * 鏈烘瀯鍚�
+	 */
+	@Schema(description = "鍥哄寲鏃堕棿")
+	private Date curedTime;
+
+	@Schema(description = "閲嶈瘯娆℃暟")
+	private Integer tryTimes = 0;
+	/**
+	 * 鐘舵�侊細1:鍒濆鍏ュ簱; 2:鍚屾鎴愬姛;3:鍚屾澶辫触
+	 */
+	private Integer status = STATUS_CREATED;
+	/**
+	 * 鏈烘瀯鍚�
+	 */
+	@Schema(description = "鍒涘缓鏃堕棿")
+	private Date createTime;
+
+	/**
+	 * 鏈烘瀯鍚�
+	 */
+	@Schema(description = "鏇存柊鏃堕棿")
+	private Date updateTime;
+
+	/**
+	 * 澧炲姞閲嶈瘯娆℃暟
+	 */
+	public void increaseTryTimes() {
+		if(tryTimes == null){
+			tryTimes = 1;
+		}else{
+			tryTimes++;
+		}
+	}
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/ListenerHelper.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/ListenerHelper.java
index db2ea16..59839a8 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/ListenerHelper.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/ListenerHelper.java
@@ -1,7 +1,7 @@
 package org.springblade.mdm.flow.excution;
 
 import lombok.extern.slf4j.Slf4j;
-import org.springblade.mdm.flow.constants.FlowContants;
+import org.springblade.mdm.flow.constants.FlowConstant;
 import org.springblade.mdm.flow.service.FlowProgramProperties;
 import org.springblade.mdm.program.entity.NcNode;
 import org.springblade.mdm.program.entity.NcProgramApproved;
@@ -22,7 +22,7 @@
 	 * @param props
 	 */
 	public void addApproveTable(NcNode packageNode, FlowProgramProperties props){
-		if(FlowContants.Y.equals(props.getProgramOnMachine())){
+		if(FlowConstant.Y.equals(props.getProgramOnMachine())){
 			log.warn("鐜板満缂栧埗锛屼笉杩涘叆瀹℃壒璁板綍琛�");
 			return ;
 		}
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 0793846..505c233 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
@@ -12,8 +12,8 @@
 import org.springblade.mdm.basesetting.producedivision.entity.ProduceDivision;
 import org.springblade.mdm.basesetting.producedivision.service.ProduceDivisionService;
 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.constants.FlowConstant;
+import org.springblade.mdm.flow.constants.FlowVariableConstant;
 import org.springblade.mdm.flow.entity.FlowProgramFile;
 import org.springblade.mdm.flow.service.FlowCommonService;
 import org.springblade.mdm.flow.service.FlowProgramFileService;
@@ -52,8 +52,8 @@
 	 */
 	@Transactional
 	public FlowStartResult start(TaskAssignVO startVO){
-		if(!FlowContants.Y.equals(startVO.getIsTempFlow())){
-			startVO.setIsTempFlow(FlowContants.N);
+		if(!FlowConstant.Y.equals(startVO.getIsTempFlow())){
+			startVO.setIsTempFlow(FlowConstant.N);
 		}
 		Map<String, Object> vars = new HashMap<>();
 
@@ -61,100 +61,100 @@
 		if(startVO.getProducePlanId() != null && startVO.getProducePlanId()!=0){
 			//鐣岄潰涓婇�夋嫨浜嗗垎宸ヨ〃鐨勬儏鍐碉紝鐩存帴鏍规嵁id鑾峰彇
 			div = produceDivisionService.getById(startVO.getProducePlanId());
-			vars.put(FlowVariableContants.TEAM_LEADER,div.getTeamLeaderId());
-			vars.put(FlowVariableContants.PROGRAMMER,div.getProgrammerId());
-			vars.put(FlowVariableContants.CHECKER,div.getCheckerId());
-			vars.put(FlowVariableContants.SENIOR,div.getSeniorId());
+			vars.put(FlowVariableConstant.TEAM_LEADER,div.getTeamLeaderId());
+			vars.put(FlowVariableConstant.PROGRAMMER,div.getProgrammerId());
+			vars.put(FlowVariableConstant.CHECKER,div.getCheckerId());
+			vars.put(FlowVariableConstant.SENIOR,div.getSeniorId());
 
-			vars.put(FlowContants.PROGRAMMER_NAME, userCommonService.getUserNameById(div.getProgrammerId()));
+			vars.put(FlowConstant.PROGRAMMER_NAME, userCommonService.getUserNameById(div.getProgrammerId()));
 
 		}else {
 			div = flowCommonService.putDefaultAssignees(vars, startVO.getDrawingNo(), null);
 		}
-		vars.put(FlowVariableContants.TITLE,startVO.getTitle());
+		vars.put(FlowVariableConstant.TITLE,startVO.getTitle());
 
 		addLastStepUserName(startVO,vars);
 
 		//鏈哄簥缂栧彿
-		vars.put(FlowVariableContants.MACHINE_CODE,startVO.getMachineCode());
+		vars.put(FlowVariableConstant.MACHINE_CODE,startVO.getMachineCode());
 		String workshop = nodeDeptQueryService.getWorkshopNameByMachineCode(startVO.getMachineCode());
-		vars.put(FlowVariableContants.WORKSHOP,workshop);
+		vars.put(FlowVariableConstant.WORKSHOP,workshop);
 		//鏈哄簥鍨嬪彿
 
 		Machine machine = machineService.getByCode(startVO.getMachineCode());
 		if(machine == null){
 			throw new ServiceException("閿欒鐨勮澶囩紪鐮侊細"+startVO.getMachineCode());
 		}
-		vars.put(FlowVariableContants.MACHINE_MODE,machine.getName());
-		vars.put(FlowVariableContants.MACHINE_GROUP_CODE,machine.getMachineGroupCode());
+		vars.put(FlowVariableConstant.MACHINE_MODE,machine.getName());
+		vars.put(FlowVariableConstant.MACHINE_GROUP_CODE,machine.getMachineGroupCode());
 
-		vars.put(FlowVariableContants.PROCESS_NO,startVO.getProcessNo());
-		vars.put(FlowVariableContants.PROCESS_NAME,startVO.getProcessName());
-		vars.put(FlowVariableContants.PROCESS_EDITION,startVO.getProcessEdition());
-		vars.put(FlowVariableContants.CRAFT_EDITION,startVO.getCraftEdition());
+		vars.put(FlowVariableConstant.PROCESS_NO,startVO.getProcessNo());
+		vars.put(FlowVariableConstant.PROCESS_NAME,startVO.getProcessName());
+		vars.put(FlowVariableConstant.PROCESS_EDITION,startVO.getProcessEdition());
+		vars.put(FlowVariableConstant.CRAFT_EDITION,startVO.getCraftEdition());
 		vars.put("planStartTime",startVO.getPlanStartTime());
-		vars.put(FlowVariableContants.DRAWING_NO,startVO.getDrawingNo());
-		vars.put(FlowVariableContants.DRAWING_NO_EDITION,startVO.getDrawingNoEdition());
+		vars.put(FlowVariableConstant.DRAWING_NO,startVO.getDrawingNo());
+		vars.put(FlowVariableConstant.DRAWING_NO_EDITION,startVO.getDrawingNoEdition());
 		vars.put("planLockDays",startVO.getPlanLockDays());
-		vars.put(FlowVariableContants.PRODUCT_MODEL,startVO.getProductModel());
+		vars.put(FlowVariableConstant.PRODUCT_MODEL,startVO.getProductModel());
 
 		if(StringUtils.isNotBlank(startVO.getDeviation())) {
-			vars.put(FlowVariableContants.DEVIATION, startVO.getDeviation());//鍋忕鍗�
+			vars.put(FlowVariableConstant.DEVIATION, startVO.getDeviation());//鍋忕鍗�
 		}
 		String programPkgName = NcNodeService.genProgramName(startVO.getDrawingNo(),startVO.getProcessNo(),startVO.getProcessEdition());
-		vars.put(FlowVariableContants.PROGRAM_PACKAGE_NAME,programPkgName);
+		vars.put(FlowVariableConstant.PROGRAM_PACKAGE_NAME,programPkgName);
 
-		vars.put(FlowVariableContants.IS_TEMP_FLOW,FlowContants.Y.equals(startVO.getIsTempFlow())?FlowContants.Y:FlowContants.N);
+		vars.put(FlowVariableConstant.IS_TEMP_FLOW, FlowConstant.Y.equals(startVO.getIsTempFlow())? FlowConstant.Y: FlowConstant.N);
 		NcNode curedProgramPackage = null;
 		if(!startVO.isTemporaryFlow() && !startVO.isDeviationFlow()) {
 			//姝e父娴佺▼(闈炰复鏃舵祦绋�) 涓斾笉鏄� 鍋忕鍗�,鎵嶅尮閰嶅浐鍖栫▼搴�
 			curedProgramPackage = ncNodeService.getLastCuredProgramWithoutProcessEdition(startVO.getDrawingNo(),startVO.getProcessNo(),startVO.getMachineCode());
 			//璁剧疆鏄惁鏈夊浐鍖栫▼搴忔爣璁�
-			vars.put(FlowVariableContants.HAS_CURED_PROGRAM, curedProgramPackage != null ? FlowContants.Y : FlowContants.N);
+			vars.put(FlowVariableConstant.HAS_CURED_PROGRAM, curedProgramPackage != null ? FlowConstant.Y : FlowConstant.N);
 			//宸ュ簭鐗堟鏄惁涓�鑷达紝鏄惁鍦ㄦ湁鏁堟湡鍐�
 			if (curedProgramPackage != null) {
-				vars.put(FlowVariableContants.CURED_NODE_ID, curedProgramPackage.getId());
-				vars.put(FlowVariableContants.CURED_LOCKED, curedProgramPackage.hasLocked()?FlowContants.Y:FlowContants.N);
-				vars.put(FlowVariableContants.IS_PROCESS_EDITION_SAME, StringUtils.equals(curedProgramPackage.getProcessEdition(), startVO.getProcessEdition()) ? FlowContants.Y : FlowContants.N);
+				vars.put(FlowVariableConstant.CURED_NODE_ID, curedProgramPackage.getId());
+				vars.put(FlowVariableConstant.CURED_LOCKED, curedProgramPackage.hasLocked()? FlowConstant.Y: FlowConstant.N);
+				vars.put(FlowVariableConstant.IS_PROCESS_EDITION_SAME, StringUtils.equals(curedProgramPackage.getProcessEdition(), startVO.getProcessEdition()) ? FlowConstant.Y : FlowConstant.N);
 				vars.put("curedProcessEdition", curedProgramPackage.getProcessEdition());
-				vars.put(FlowVariableContants.VALIDITY_PERIOD, curedProgramPackage.withinValidityPeriod() ? FlowContants.Y : FlowContants.N);
+				vars.put(FlowVariableConstant.VALIDITY_PERIOD, curedProgramPackage.withinValidityPeriod() ? FlowConstant.Y : FlowConstant.N);
 			} else {
-				vars.put(FlowVariableContants.IS_PROCESS_EDITION_SAME, FlowContants.Y);
-				vars.put(FlowVariableContants.VALIDITY_PERIOD, FlowContants.Y);
+				vars.put(FlowVariableConstant.IS_PROCESS_EDITION_SAME, FlowConstant.Y);
+				vars.put(FlowVariableConstant.VALIDITY_PERIOD, FlowConstant.Y);
 			}
 
 		}else{
 			//涓存椂娴佺▼/鍋忕鍗曪紝涓嶅尮閰嶅浐鍖栫▼搴�
-			vars.put(FlowVariableContants.HAS_CURED_PROGRAM,FlowContants.N);
+			vars.put(FlowVariableConstant.HAS_CURED_PROGRAM, FlowConstant.N);
 		}
 		String myProcessName = "璇曞垏涓嬪彂娴佺▼";
-		if(vars.getOrDefault(FlowVariableContants.IS_TEMP_FLOW,FlowContants.N).equals(FlowContants.Y)){
+		if(vars.getOrDefault(FlowVariableConstant.IS_TEMP_FLOW, FlowConstant.N).equals(FlowConstant.Y)){
 			myProcessName = "璇曞垏琛ュ厖娴佺▼";
 		}else if(StringUtils.isNotBlank(startVO.getDeviation()) ){
 			myProcessName = "鍋忕鍗�";
-		}else if(vars.getOrDefault(FlowVariableContants.HAS_CURED_PROGRAM,FlowContants.N).equals(FlowContants.Y)){
+		}else if(vars.getOrDefault(FlowVariableConstant.HAS_CURED_PROGRAM, FlowConstant.N).equals(FlowConstant.Y)){
 			myProcessName = "鍥哄寲涓嬪彂娴佺▼";
 		}
 
-		vars.put(FlowVariableContants.MY_PROCESS_NAME, myProcessName);
+		vars.put(FlowVariableConstant.MY_PROCESS_NAME, myProcessName);
 
 		String businessKey = Func.toStr(startVO.getTaskDispatchId());//涓氬姟琛╧ey
 		identityService.setAuthenticatedUserId(String.valueOf(AuthUtil.getUserId()));//璁剧疆娴佺▼鍙戣捣浜�
 		ProcessInstance inst;
 		if(startVO.isTemporaryFlow()){
-			vars.put(FlowVariableContants.ASSIGNEE,div.getProgrammerId());//绗竴涓敤鎴风紪鍒朵笂浼犳枃浠�
-			vars.put(FlowContants.PROGRAMMER_NAME,userCommonService.getUserNameById(div.getProgrammerId()));//缂栫▼鍛樺鍚�
+			vars.put(FlowVariableConstant.ASSIGNEE,div.getProgrammerId());//绗竴涓敤鎴风紪鍒朵笂浼犳枃浠�
+			vars.put(FlowConstant.PROGRAMMER_NAME,userCommonService.getUserNameById(div.getProgrammerId()));//缂栫▼鍛樺鍚�
 
-			inst = runtimeService.startProcessInstanceByKey(FlowContants.APPEND_PROCESS_KEY,businessKey,vars);
+			inst = runtimeService.startProcessInstanceByKey(FlowConstant.APPEND_PROCESS_KEY,businessKey,vars);
 		}else{
-			vars.put(FlowVariableContants.ASSIGNEE,div.getTeamLeaderId());//绗竴涓敤鎴风粍闀�
-			inst = runtimeService.startProcessInstanceByKey(FlowContants.TRY_PROCESS_KEY,businessKey,vars);
+			vars.put(FlowVariableConstant.ASSIGNEE,div.getTeamLeaderId());//绗竴涓敤鎴风粍闀�
+			inst = runtimeService.startProcessInstanceByKey(FlowConstant.TRY_PROCESS_KEY,businessKey,vars);
 		}
 		FlowStartResult result = new FlowStartResult();
 		result.setProcessInstanceId(inst.getProcessInstanceId());
 		//鐢熸垚绋嬪簭缂栧彿
 		String programNo = programSeqService.generageProgramNo();
-		runtimeService.setVariable(inst.getProcessInstanceId(),FlowContants.PROGRAM_NO,programNo);
+		runtimeService.setVariable(inst.getProcessInstanceId(), FlowVariableConstant.PROGRAM_NO,programNo);
 		result.setProgramNo(programNo);
 
 		if(curedProgramPackage != null) {//瀛樺湪宸插浐鍖栫▼搴忥紝澶嶅埗鍘熸潵鐨勭▼搴忔枃浠躲��
@@ -173,12 +173,12 @@
 	 */
 	private void addLastStepUserName(TaskAssignVO startVO, Map<String, Object> vars) {
 		if(startVO.getDispatchBy() != null) {
-			vars.put(FlowVariableContants.LAST_STEP_USER_NICKNAME, startVO.getDispatchBy());
+			vars.put(FlowVariableConstant.LAST_STEP_USER_NICKNAME, startVO.getDispatchBy());
 		}else{
 			if(startVO.getCreateUser() != null) {
-				vars.put(FlowVariableContants.LAST_STEP_USER_NICKNAME, this.userCommonService.getUserNameById(startVO.getCreateUser()));
+				vars.put(FlowVariableConstant.LAST_STEP_USER_NICKNAME, this.userCommonService.getUserNameById(startVO.getCreateUser()));
 			}else{
-				vars.put(FlowVariableContants.LAST_STEP_USER_NICKNAME,"MES绯荤粺");
+				vars.put(FlowVariableConstant.LAST_STEP_USER_NICKNAME,"MES绯荤粺");
 			}
 		}
 	}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/CureFinishOperateTask.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/CureFinishOperateTask.java
index 16619fb..93406eb 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/CureFinishOperateTask.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/CureFinishOperateTask.java
@@ -3,18 +3,15 @@
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.flowable.engine.delegate.DelegateExecution;
-import org.springblade.core.oss.OssTemplate;
 import org.springblade.core.tool.utils.DateUtil;
+import org.springblade.core.tool.utils.SpringUtil;
 import org.springblade.mdm.flow.excution.dispatch.FinishDataHandler;
+import org.springblade.mdm.flow.excution.events.CureFinishedEvent;
 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.entity.NcNode;
-import org.springblade.mdm.program.service.NcNodeAutoCreateService;
 import org.springblade.mdm.program.service.NcNodeHisService;
 import org.springblade.mdm.program.service.NcNodeService;
-import org.springblade.system.feign.ISysClient;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -41,9 +38,18 @@
 		log.info("鎵ц鍥哄寲绋嬪簭浠诲姟鏈嶅姟,娴佺▼瀹炰緥id={}", execution.getProcessInstanceId());
 		Date time = DateUtil.now();
 		//鍥哄寲绋嬪簭妫�鏌ユ湁鏁堟湡锛�
-		dealWithNode(execution.getProcessInstanceId());
+		NcNode node = dealWithNode(execution.getProcessInstanceId());
 
 		nodeHisService.mergeNodeToHisGeTime(time);
+
+		publishEvent(node.getProgramNo());
+
+	}
+
+	void publishEvent(String programNo) {
+		//TaskDispatch dispatch = taskDispatchService.getByProgramNo(programNo);
+		CureFinishedEvent event = new  CureFinishedEvent("curefinish",programNo);
+		SpringUtil.publishEvent(event);
 	}
 
 	/**
@@ -51,13 +57,14 @@
 	 *
 	 * @param processInstanceId 娴佺▼瀹炰緥id
 	 */
-	void dealWithNode(String processInstanceId) throws IOException {
+	NcNode dealWithNode(String processInstanceId) throws IOException {
 		//绋嬪簭鍖呰妭鐐瑰拰涓嬪睘绋嬪簭鑺傜偣(鍖呮嫭鍘嗗彶鑺傜偣闈炴渶鏂扮増鏈殑)浠庤瘯鍒囨尓鍒板浐鍖栦笅闈�
 		//绋嬪簭鍖呰妭鐐� 璁剧疆鏈凡鍥哄寲
 		NcNode pkgNode = nodeService.lambdaQuery().eq(NcNode::getProcessInstanceId,  processInstanceId).one();
 		FlowProgramProperties flowProps = flowCommonService.getProgramProperties(processInstanceId);
 		getDataHandler(pkgNode).handleData(flowProps);
 
+		return pkgNode;
 	}
 
 	/**
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/DataHandlerHelper.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/DataHandlerHelper.java
index 25a4103..0af740c 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/DataHandlerHelper.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/DataHandlerHelper.java
@@ -1,6 +1,5 @@
 package org.springblade.mdm.flow.excution.dispatch;
 
-import org.springblade.mdm.flow.constants.FlowContants;
 import org.springblade.mdm.flow.service.FlowProgramProperties;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/NormalFinishDataHandler.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/NormalFinishDataHandler.java
index 86fcd99..f6fe576 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/NormalFinishDataHandler.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/NormalFinishDataHandler.java
@@ -8,7 +8,7 @@
 import org.springblade.core.oss.model.BladeFile;
 import org.springblade.mdm.basesetting.machine.entity.Machine;
 import org.springblade.mdm.basesetting.machine.service.MachineService;
-import org.springblade.mdm.flow.constants.FlowContants;
+import org.springblade.mdm.flow.constants.FlowConstant;
 import org.springblade.mdm.flow.entity.FlowProgramFile;
 import org.springblade.mdm.flow.excution.ListenerHelper;
 import org.springblade.mdm.flow.service.FlowProgramFileService;
@@ -17,7 +17,6 @@
 import org.springblade.mdm.program.entity.NcNode;
 import org.springblade.mdm.program.service.NcNodeAutoCreateService;
 import org.springblade.mdm.program.service.NcNodeService;
-import org.springblade.mdm.program.service.ProgramAnnotationService;
 import org.springblade.mdm.program.service.programannotation.*;
 import org.springblade.mdm.utils.ProgramFileNameParser;
 import org.springframework.beans.BeanUtils;
@@ -27,7 +26,6 @@
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -47,8 +45,6 @@
 	@Autowired
 	private NcNodeAutoCreateService ncNodeAutoCreateService;
 	@Autowired
-	private ProgramAnnotationService programAnnotationService;
-	@Autowired
 	private ListenerHelper listenerHelper;
 	@Autowired
 	private OssTemplate ossTemplate;
@@ -59,24 +55,20 @@
 	 */
 	public void handleData(FlowProgramProperties props) throws IOException {
 		// 鎵ц涓氬姟閫昏緫
-		LocalDateTime now = LocalDateTime.now();
 		NcNode packageNode;
-		if(FlowContants.Y.equals(props.getHasCuredProgram())){
+		if(FlowConstant.Y.equals(props.getHasCuredProgram())){
 			//鏈夊浐鍖�
 			packageNode = ncNodeService.getById(props.getCuredNodeId());
 
-			if(FlowContants.N.equals(props.getCureProgramUseable())) {
+			if(FlowConstant.N.equals(props.getCureProgramUseable())) {
 				//绋嬪簭涓嶅彲鐢紝鍘熸潵鐨勫浐鍖栬妭鐐归攣瀹�
 				packageNode.lock();
 				ncNodeService.updateById(packageNode);
 
 				//鐗堟湰鍙锋牴鎹浂缁勪欢鍙�+宸ュ簭鍙凤紝宸ュ簭鐗堟锛屾満搴婄粍 鐩存帴鏌ヨ鏁伴噺锛�+1鑾峰彇
 				Integer newVersion = ncNodeService.calculateVersionNumber(packageNode);
-				//Integer newVersion = packageNode.genNewVersionNumber();
-
 				packageNode = ncNodeAutoCreateService.createNodeTreeWithProgram(props,newVersion);
 			}else{
-				//String oriProcessEdition = packageNode.getProcessEdition();
 				//鍙敤锛岀┖鍗囩増锛堜慨鏀瑰叾宸ュ簭鐗堟锛夛紝鍘熸潵鐨勮妭鐐规竻闄�
 				moveToNewProcessEdition(packageNode,props);
 
@@ -107,25 +99,9 @@
 
 		FlowProgramProperties tempProps = new FlowProgramProperties();
 		BeanUtils.copyProperties(props,tempProps);
-		tempProps.setProcessDefinitionKey(FlowContants.CURE_PROCESS_KEY);//涓存椂淇敼鍏朵负鍥哄寲,鍦ㄥ浐鍖栦笅鍒涘缓鑺傜偣
+		tempProps.setProcessDefinitionKey(FlowConstant.CURE_PROCESS_KEY);//涓存椂淇敼鍏朵负鍥哄寲,鍦ㄥ浐鍖栦笅鍒涘缓鑺傜偣
 		NcNode machineGroupNode = ncNodeAutoCreateService.createNodeTreeToMachineGroup(tempProps);
 
-		//绉诲姩鍘嗗彶鑺傜偣鍒版柊鐨勭増娆¤妭鐐逛笅
-		/*
-		List<NcNode> packageHisNodes = ncNodeService.getTryNodeHistory(packageNode);//璇ュ寘鐨勫巻鍙茶妭鐐瑰垪琛�
-		for(NcNode hisPackageNode : packageHisNodes){
-			hisPackageNode.setParentId(machineGroupNode.getId());
-			hisPackageNode.setParentIds(machineGroupNode.getParentIds()+","+machineGroupNode.getId());
-
-			List<NcNode> oriProgramNodes = ncNodeService.lambdaQuery().eq(NcNode::getParentId,hisPackageNode.getId()).list();
-
-			for(NcNode oldProgramNode : oriProgramNodes){
-				oldProgramNode.setParentIds(hisPackageNode.getParentIds()+","+hisPackageNode.getId());
-			}
-			ncNodeService.updateBatchById(oriProgramNodes);
-		}
-		ncNodeService.updateBatchById(packageHisNodes);
-		*/
 		//绉诲姩绋嬪簭鍖呭悕鑺傜偣
 		packageNode.setProcessEdition(tempProps.getProcessEdition());
 		packageNode.setParentId(machineGroupNode.getId());
@@ -178,14 +154,9 @@
 		try(InputStream ins = ossTemplate.statFileStream(flowProgramFile.getOssName());){
 			ByteArrayInputStream byteInputStream =  new ByteArrayInputStream(IOUtils.toByteArray(ins));
 
-			//List<DictBiz> annoDictList = programAnnotationService.getAnnotionDictList();
 
 			AnnotationProcessor annoProcessor = ProcessorHelper.getProcessor(controlSystem,this.annotationConfig);
-			/*
-			AnnotationProperties annoProps = annotationConfig.getConfigMap().get(controlSystem);
-			if(annoProps == null){
-				annoProps = AnnotationProperties.getDefault();
-			}*/
+
 			InputStream finishedStream = annoProcessor.putFilenameAnnotation(filename,byteInputStream);
 			//InputStream finishedStream = AnnotationUtil.setAnnotationAndGetInputStream(byteInputStream, "GH", annoProps.getStatusLineIndex(), controlSystem, annoDictList);
 			try(finishedStream) {
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/events/CureFinishedEvent.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/events/CureFinishedEvent.java
new file mode 100644
index 0000000..8e360d4
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/events/CureFinishedEvent.java
@@ -0,0 +1,16 @@
+package org.springblade.mdm.flow.excution.events;
+
+import org.springframework.context.ApplicationEvent;
+
+
+public class CureFinishedEvent extends ApplicationEvent {
+	private final String programNo;
+	public CureFinishedEvent(Object source,String aProgramNo) {
+		super(source);
+		this.programNo = aProgramNo;
+	}
+
+	public String getProgramNo() {
+		return programNo;
+	}
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/listeners/CuredEventListener.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/listeners/CuredEventListener.java
new file mode 100644
index 0000000..c3d26da
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/listeners/CuredEventListener.java
@@ -0,0 +1,53 @@
+package org.springblade.mdm.flow.excution.listeners;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springblade.core.tool.utils.DateUtil;
+import org.springblade.mdm.flow.entity.MesSync;
+import org.springblade.mdm.flow.entity.TaskDispatch;
+import org.springblade.mdm.flow.excution.events.CureFinishedEvent;
+import org.springblade.mdm.flow.service.MesSyncService;
+import org.springblade.mdm.flow.service.TaskDispatchService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.event.EventListener;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+/**
+ * 鍥哄寲娴佺▼鎵ц瀹屾垚鍚庯紝闇�瑕佸鐞嗙殑浜嬩欢锛氬叆搴搈es鍚屾琛�
+ */
+@Slf4j
+@Component
+public class CuredEventListener {
+	@Autowired
+	private TaskDispatchService taskDispatchService;
+	@Autowired
+	private MesSyncService mesSyncService;
+
+	@EventListener(value = CureFinishedEvent.class)
+	public void hello(CureFinishedEvent event) {
+		TaskDispatch dispatch = taskDispatchService.getByProgramNo(event.getProgramNo());
+		if (dispatch == null) {
+			log.info("鏍规嵁绋嬪簭缂栧彿:{}鎵句笉鍒颁换鍔″垎娲捐褰�", event.getProgramNo());
+			return;
+		}
+		if (StringUtils.isBlank(dispatch.getOperationId())) {
+			log.info("浠诲姟dispatch.id:{}瀵瑰簲鐨刼peration_id 涓虹┖锛屼笉璁板叆鍚屾mes琛�", dispatch.getId());
+			return;
+		}
+
+		MesSync sync = new MesSync();
+		sync.setStatus(MesSync.STATUS_CREATED);
+		sync.setOperationId(dispatch.getOperationId());
+		sync.setProgramNo(dispatch.getProgramNo());
+		sync.setTryTimes(0);
+		Date now = new Date();
+		sync.setCuredTime(now);
+		sync.setCreateTime(now);
+		sync.setUpdateTime(now);
+
+		mesSyncService.saveAndSync(sync);
+	}
+
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/replace/ReplaceFinishListener.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/replace/ReplaceFinishListener.java
index d7f8798..d4e2b9a 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/replace/ReplaceFinishListener.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/replace/ReplaceFinishListener.java
@@ -4,9 +4,7 @@
 import org.flowable.engine.RuntimeService;
 import org.flowable.engine.delegate.DelegateExecution;
 import org.springblade.core.tool.utils.DateUtil;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.mdm.flow.constants.FlowContants;
-import org.springblade.mdm.flow.entity.ApproveRecord;
+import org.springblade.mdm.flow.constants.FlowConstant;
 import org.springblade.mdm.flow.entity.FlowProgramFile;
 import org.springblade.mdm.flow.service.*;
 import org.springblade.mdm.program.entity.NcNode;
@@ -50,7 +48,7 @@
 
 		String instId = execution.getProcessInstanceId();
 		FlowProgramProperties props = flowCommonService.getProgramProperties(instId);
-		Long nodeId = runtimeService.getVariable(execution.getId(),FlowContants.NODE_ID,Long.class);
+		Long nodeId = runtimeService.getVariable(execution.getId(), FlowConstant.NODE_ID,Long.class);
 		log.info("浜嬩欢鍚嶇О{}锛宨nstid={}" , execution.getEventName(),instId);
 
 		//List<FlowProgramFile> programFiles =  flowProgramFileService.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId, instId).list();
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/unlock/UnlockFinishListener.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/unlock/UnlockFinishListener.java
index a6343e6..0a02fd0 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/unlock/UnlockFinishListener.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/unlock/UnlockFinishListener.java
@@ -4,13 +4,10 @@
 import org.flowable.engine.RuntimeService;
 import org.flowable.engine.delegate.DelegateExecution;
 import org.springblade.core.tool.utils.DateUtil;
-import org.springblade.mdm.flow.constants.FlowContants;
 import org.springblade.mdm.flow.excution.ListenerHelper;
 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.entity.NcNode;
-import org.springblade.mdm.program.entity.NcProgramApproved;
 import org.springblade.mdm.program.service.NcNodeHisService;
 import org.springblade.mdm.program.service.NcNodeService;
 import org.springblade.mdm.program.service.NcProgramApprovedService;
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/MesSyncMapper.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/MesSyncMapper.java
new file mode 100644
index 0000000..f199faf
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/MesSyncMapper.java
@@ -0,0 +1,7 @@
+package org.springblade.mdm.flow.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.mdm.flow.entity.MesSync;
+public interface MesSyncMapper extends BaseMapper<MesSync> {
+
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/MesSyncMapper.xml b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/MesSyncMapper.xml
new file mode 100644
index 0000000..c0e0a8b
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/MesSyncMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.mdm.flow.mapper.MesSyncMapper">
+
+</mapper>
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/props/MesInterfaceProperties.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/props/MesInterfaceProperties.java
new file mode 100644
index 0000000..0c2b865
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/props/MesInterfaceProperties.java
@@ -0,0 +1,20 @@
+package org.springblade.mdm.flow.props;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Component
+@ConfigurationProperties(prefix = "third-party.mes")
+@Data
+public class MesInterfaceProperties {
+	/**
+	 * 閲嶈瘯娆℃暟
+	 */
+	private int maxTryTimes;
+	/**
+	 * 鎺ュ彛鍦板潃
+	 */
+	private String operationUpdateEndpoint;
+
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/CureFlowService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/CureFlowService.java
index 9b92de6..164e158 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/CureFlowService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/CureFlowService.java
@@ -6,12 +6,10 @@
 import org.flowable.engine.RuntimeService;
 import org.flowable.engine.runtime.ProcessInstance;
 import org.springblade.core.secure.utils.AuthUtil;
-import org.springblade.core.tool.utils.Func;
 import org.springblade.mdm.basesetting.machine.service.MachineService;
-import org.springblade.mdm.basesetting.machine.entity.Machine;
 import org.springblade.mdm.basesetting.producedivision.service.ProduceDivisionService;
-import org.springblade.mdm.flow.constants.FlowContants;
-import org.springblade.mdm.flow.constants.FlowVariableContants;
+import org.springblade.mdm.flow.constants.FlowConstant;
+import org.springblade.mdm.flow.constants.FlowVariableConstant;
 import org.springblade.mdm.flow.entity.FlowProgramFile;
 import org.springblade.mdm.program.entity.NcNode;
 import org.springblade.mdm.program.service.NcNodeService;
@@ -58,7 +56,7 @@
 	private void startOneNew(Long nodeId, List<FlowProgramFile> fileList) {
 		Map<String, Object> vars = new HashMap<>();
 		NcNode programPackage = this.ncNodeService.getById(nodeId);
-		vars.put(FlowContants.NODE_ID,programPackage.getId());
+		vars.put(FlowConstant.NODE_ID,programPackage.getId());
 
 		flowCommonService.putFlowVariablesByNode(vars,programPackage);
 		/*
@@ -86,21 +84,21 @@
 		*/
 
 		flowCommonService.putDefaultAssignees(vars,programPackage.getDrawingNo(),null);
-		vars.put(FlowVariableContants.ASSIGNEE,vars.get(FlowVariableContants.PROGRAMMER));
+		vars.put(FlowVariableConstant.ASSIGNEE,vars.get(FlowVariableConstant.PROGRAMMER));
 
 		identityService.setAuthenticatedUserId(String.valueOf(AuthUtil.getUserId()));//璁剧疆娴佺▼鍙戣捣浜�
 
-		vars.put(FlowVariableContants.LAST_STEP_USER_NICKNAME, AuthUtil.getNickName());
+		vars.put(FlowVariableConstant.LAST_STEP_USER_NICKNAME, AuthUtil.getNickName());
 
 
 		if(programPackage.getDeviation() != null) {
-			vars.put(FlowVariableContants.MY_PROCESS_NAME, "鍋忕鍥炰紶");
-			vars.put(FlowVariableContants.TITLE,programPackage.getName()+"-鍋忕鍥炰紶");//鑷姩澧炲姞鏍囬
+			vars.put(FlowVariableConstant.MY_PROCESS_NAME, "鍋忕鍥炰紶");
+			vars.put(FlowVariableConstant.TITLE,programPackage.getName()+"-鍋忕鍥炰紶");//鑷姩澧炲姞鏍囬
 		}else {
-			vars.put(FlowVariableContants.MY_PROCESS_NAME, "鍥哄寲娴佺▼");
-			vars.put(FlowVariableContants.TITLE,programPackage.getName()+"-"+programPackage.getProcessEdition()+"-鍥哄寲");//鑷姩澧炲姞鏍囬
+			vars.put(FlowVariableConstant.MY_PROCESS_NAME, "鍥哄寲娴佺▼");
+			vars.put(FlowVariableConstant.TITLE,programPackage.getName()+"-"+programPackage.getProcessEdition()+"-鍥哄寲");//鑷姩澧炲姞鏍囬
 		}
-		ProcessInstance inst = runtimeService.startProcessInstanceByKey(FlowContants.CURE_PROCESS_KEY,"0",vars);
+		ProcessInstance inst = runtimeService.startProcessInstanceByKey(FlowConstant.CURE_PROCESS_KEY,"0",vars);
 
 		//鏇存柊绋嬪簭鍖呭悕鑺傜偣鐨勬祦绋嬪疄渚媔d
 		programPackage.setProcessInstanceId(inst.getProcessInstanceId());
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowBusinessService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowBusinessService.java
index eebb8de..0e78703 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowBusinessService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowBusinessService.java
@@ -21,8 +21,7 @@
 import org.springblade.mdm.basesetting.machine.entity.Machine;
 import org.springblade.mdm.basesetting.machine.service.MachineService;
 import org.springblade.mdm.commons.service.ParamService;
-import org.springblade.mdm.flow.constants.FlowContants;
-import org.springblade.mdm.flow.constants.FlowVariableContants;
+import org.springblade.mdm.flow.constants.FlowVariableConstant;
 import org.springblade.mdm.flow.entity.FlowProgramFile;
 import org.springblade.mdm.flow.entity.MdmFlowProcess;
 import org.springblade.mdm.flow.util.MdmFlowCache;
@@ -78,14 +77,14 @@
 					//杞﹀簥
 					todoQuery.or();
 					for (String mCode : turnMachineCodes) {
-						todoQuery.processVariableValueEquals(FlowVariableContants.MACHINE_CODE, mCode);
+						todoQuery.processVariableValueEquals(FlowVariableConstant.MACHINE_CODE, mCode);
 					}
 					todoQuery.endOr();
 				} else {
 					//鍔犲伐涓績
 					todoQuery.or();
 					for (String mCode : turnMachineCodes) {
-						todoQuery.processVariableValueNotEquals(FlowVariableContants.MACHINE_CODE, mCode);
+						todoQuery.processVariableValueNotEquals(FlowVariableConstant.MACHINE_CODE, mCode);
 					}
 					todoQuery.endOr();
 				}
@@ -123,13 +122,13 @@
 		if(Func.isNotEmpty(keyword)) {
 			String likeVal = "%" + keyword + "%";
 			todoQuery.or();
-			todoQuery.processVariableValueLike(FlowVariableContants.TITLE,likeVal);
-			todoQuery.processVariableValueLike(FlowVariableContants.PROCESS_NO, likeVal);
-			todoQuery.processVariableValueLike(FlowVariableContants.MACHINE_CODE, likeVal);
-			todoQuery.processVariableValueLike(FlowVariableContants.MACHINE_MODE, likeVal);
-			todoQuery.processVariableValueLike(FlowVariableContants.PROCESS_NAME, likeVal);
-			todoQuery.processVariableValueLike(FlowVariableContants.PROCESS_EDITION, likeVal);
-			todoQuery.processVariableValueLike(FlowVariableContants.CRAFT_EDITION, likeVal);
+			todoQuery.processVariableValueLike(FlowVariableConstant.TITLE,likeVal);
+			todoQuery.processVariableValueLike(FlowVariableConstant.PROCESS_NO, likeVal);
+			todoQuery.processVariableValueLike(FlowVariableConstant.MACHINE_CODE, likeVal);
+			todoQuery.processVariableValueLike(FlowVariableConstant.MACHINE_MODE, likeVal);
+			todoQuery.processVariableValueLike(FlowVariableConstant.PROCESS_NAME, likeVal);
+			todoQuery.processVariableValueLike(FlowVariableConstant.PROCESS_EDITION, likeVal);
+			todoQuery.processVariableValueLike(FlowVariableConstant.CRAFT_EDITION, likeVal);
 
 			todoQuery.processDefinitionNameLike(likeVal);
 			todoQuery.endOr();
@@ -320,7 +319,7 @@
 			taskQuery.taskCreatedBefore(DateUtil.toDate(createTimeEnd.plusDays(1)));
 		}
 		if(Func.isNotEmpty(myProcessName)) {
-			taskQuery.processVariableValueEquals(FlowVariableContants.MY_PROCESS_NAME, myProcessName);
+			taskQuery.processVariableValueEquals(FlowVariableConstant.MY_PROCESS_NAME, myProcessName);
 		}
 
 		addKeywordCondition(taskQuery, keyword);
@@ -357,7 +356,7 @@
 		HistoricProcessInstanceQuery query = this.historyService.createHistoricProcessInstanceQuery().finished().includeProcessVariables();
 			//.finished() // 鍙煡璇㈠凡瀹屾垚鐨勬祦绋�.unfinished() // 鏌ヨ鏈畬鎴愮殑娴佺▼
 		if(Func.isNotEmpty(myProcessName)) {
-			query.variableValueEquals(FlowVariableContants.MY_PROCESS_NAME, myProcessName);
+			query.variableValueEquals(FlowVariableConstant.MY_PROCESS_NAME, myProcessName);
 		}
 		if(createTimeBegin!=null) {
 			query.startedAfter(DateUtil.toDate(createTimeBegin));
@@ -368,13 +367,13 @@
 		if(Func.isNotEmpty(keyword)) {
 			String likeVal = "%" + keyword + "%";
 			query.or();
-			query.variableValueLike(FlowVariableContants.TITLE,likeVal);
-			query.variableValueLike(FlowVariableContants.PROCESS_NO, likeVal);
-			query.variableValueLike(FlowVariableContants.MACHINE_CODE, likeVal);
-			query.variableValueLike(FlowVariableContants.MACHINE_MODE, likeVal);
-			query.variableValueLike(FlowVariableContants.PROCESS_NAME, likeVal);
-			query.variableValueLike(FlowVariableContants.PROCESS_EDITION, likeVal);
-			query.variableValueLike(FlowVariableContants.CRAFT_EDITION, likeVal);
+			query.variableValueLike(FlowVariableConstant.TITLE,likeVal);
+			query.variableValueLike(FlowVariableConstant.PROCESS_NO, likeVal);
+			query.variableValueLike(FlowVariableConstant.MACHINE_CODE, likeVal);
+			query.variableValueLike(FlowVariableConstant.MACHINE_MODE, likeVal);
+			query.variableValueLike(FlowVariableConstant.PROCESS_NAME, likeVal);
+			query.variableValueLike(FlowVariableConstant.PROCESS_EDITION, likeVal);
+			query.variableValueLike(FlowVariableConstant.CRAFT_EDITION, likeVal);
 
 			query.endOr();
 		}
@@ -426,9 +425,9 @@
 		HistoricProcessInstanceQuery query = this.historyService.createHistoricProcessInstanceQuery().finished().includeProcessVariables();
 		//.finished() // 鍙煡璇㈠凡瀹屾垚鐨勬祦绋�.unfinished() // 鏌ヨ鏈畬鎴愮殑娴佺▼
 
-		query.variableValueEquals(FlowVariableContants.EXCEPTION, "1");
+		query.variableValueEquals(FlowVariableConstant.EXCEPTION, "1");
 		if(Func.isNotEmpty(myProcessName)) {
-			query.variableValueEquals(FlowVariableContants.MY_PROCESS_NAME, myProcessName);
+			query.variableValueEquals(FlowVariableConstant.MY_PROCESS_NAME, myProcessName);
 		}
 		if(createTimeBegin!=null) {
 			query.startedAfter(DateUtil.toDate(createTimeBegin));
@@ -439,13 +438,13 @@
 		if(Func.isNotEmpty(keyword)) {
 			String likeVal = "%" + keyword + "%";
 			query.or();
-			query.variableValueLike(FlowVariableContants.TITLE,likeVal);
-			query.variableValueLike(FlowVariableContants.PROCESS_NO, likeVal);
-			query.variableValueLike(FlowVariableContants.MACHINE_CODE, likeVal);
-			query.variableValueLike(FlowVariableContants.MACHINE_MODE, likeVal);
-			query.variableValueLike(FlowVariableContants.PROCESS_NAME, likeVal);
-			query.variableValueLike(FlowVariableContants.PROCESS_EDITION, likeVal);
-			query.variableValueLike(FlowVariableContants.CRAFT_EDITION, likeVal);
+			query.variableValueLike(FlowVariableConstant.TITLE,likeVal);
+			query.variableValueLike(FlowVariableConstant.PROCESS_NO, likeVal);
+			query.variableValueLike(FlowVariableConstant.MACHINE_CODE, likeVal);
+			query.variableValueLike(FlowVariableConstant.MACHINE_MODE, likeVal);
+			query.variableValueLike(FlowVariableConstant.PROCESS_NAME, likeVal);
+			query.variableValueLike(FlowVariableConstant.PROCESS_EDITION, likeVal);
+			query.variableValueLike(FlowVariableConstant.CRAFT_EDITION, likeVal);
 
 			query.endOr();
 		}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowCommonService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowCommonService.java
index eef7d61..0fadac3 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowCommonService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowCommonService.java
@@ -6,23 +6,18 @@
 import org.flowable.engine.RuntimeService;
 import org.flowable.engine.history.HistoricProcessInstance;
 import org.flowable.engine.runtime.ProcessInstance;
-import org.flowable.task.api.history.HistoricTaskInstance;
-import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.mdm.basesetting.machine.service.MachineService;
 import org.springblade.mdm.basesetting.machine.entity.Machine;
 import org.springblade.mdm.basesetting.producedivision.entity.ProduceDivision;
 import org.springblade.mdm.basesetting.producedivision.service.ProduceDivisionService;
 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.constants.FlowConstant;
+import org.springblade.mdm.flow.constants.FlowVariableConstant;
 import org.springblade.mdm.program.entity.NcNode;
 import org.springblade.mdm.program.service.NodeDeptQueryService;
-import org.springblade.system.feign.IUserClient;
-import org.springblade.system.pojo.entity.User;
 import org.springframework.stereotype.Service;
 
-import java.util.List;
 import java.util.Map;
 
 @AllArgsConstructor
@@ -88,47 +83,47 @@
 	 */
 	void copyFlowPropertiesFromMap(FlowProgramProperties programProperties,Map<String, Object> vars){
 
-		programProperties.setTitle(String.valueOf(vars.get(FlowVariableContants.TITLE)));
-		programProperties.setIsTempFlow(Func.toStr(vars.get(FlowVariableContants.IS_TEMP_FLOW)));
-		programProperties.setDrawingNo(String.valueOf(vars.get(FlowVariableContants.DRAWING_NO)));
-		programProperties.setDrawingNoEdition(String.valueOf(vars.get(FlowVariableContants.DRAWING_NO_EDITION)));
-		programProperties.setProductModel(String.valueOf(vars.get(FlowVariableContants.PRODUCT_MODEL)));
+		programProperties.setTitle(String.valueOf(vars.get(FlowVariableConstant.TITLE)));
+		programProperties.setIsTempFlow(Func.toStr(vars.get(FlowVariableConstant.IS_TEMP_FLOW)));
+		programProperties.setDrawingNo(String.valueOf(vars.get(FlowVariableConstant.DRAWING_NO)));
+		programProperties.setDrawingNoEdition(String.valueOf(vars.get(FlowVariableConstant.DRAWING_NO_EDITION)));
+		programProperties.setProductModel(String.valueOf(vars.get(FlowVariableConstant.PRODUCT_MODEL)));
 
-		programProperties.setProcessNo(String.valueOf(vars.get(FlowVariableContants.PROCESS_NO)));
-		programProperties.setProcessEdition(String.valueOf(vars.get(FlowVariableContants.PROCESS_EDITION)));//宸ュ簭鐗堟
-		programProperties.setProcessName(String.valueOf(vars.get(FlowVariableContants.PROCESS_NAME)));
-		programProperties.setMachineCode(String.valueOf(vars.get(FlowVariableContants.MACHINE_CODE)));
-		programProperties.setMachineGroupCode(String.valueOf(vars.get(FlowVariableContants.MACHINE_GROUP_CODE)));
-		programProperties.setMachineMode(String.valueOf(vars.get(FlowVariableContants.MACHINE_MODE)));
+		programProperties.setProcessNo(String.valueOf(vars.get(FlowVariableConstant.PROCESS_NO)));
+		programProperties.setProcessEdition(String.valueOf(vars.get(FlowVariableConstant.PROCESS_EDITION)));//宸ュ簭鐗堟
+		programProperties.setProcessName(String.valueOf(vars.get(FlowVariableConstant.PROCESS_NAME)));
+		programProperties.setMachineCode(String.valueOf(vars.get(FlowVariableConstant.MACHINE_CODE)));
+		programProperties.setMachineGroupCode(String.valueOf(vars.get(FlowVariableConstant.MACHINE_GROUP_CODE)));
+		programProperties.setMachineMode(String.valueOf(vars.get(FlowVariableConstant.MACHINE_MODE)));
 		//鏁版嵁澶勭悊鍚嶇О涓虹増娆′互鍓嶏紝闆朵欢鍙峰姞宸ュ簭鍙凤細YZL4-1100-01-50 闆剁粍浠跺彿锛歒ZL4-1100-01 宸ュ簭鍙� 50
 
-		programProperties.setCraftEdition(String.valueOf(vars.get(FlowVariableContants.CRAFT_EDITION)));
-		programProperties.setHasCuredProgram(String.valueOf(vars.get(FlowVariableContants.HAS_CURED_PROGRAM)));
-		programProperties.setIsProcessEditionSame(String.valueOf(vars.get(FlowVariableContants.IS_PROCESS_EDITION_SAME)));
-		if(vars.containsKey(FlowVariableContants.DEVIATION)) {
-			programProperties.setDeviation(String.valueOf(vars.get(FlowVariableContants.DEVIATION)));
+		programProperties.setCraftEdition(String.valueOf(vars.get(FlowVariableConstant.CRAFT_EDITION)));
+		programProperties.setHasCuredProgram(String.valueOf(vars.get(FlowVariableConstant.HAS_CURED_PROGRAM)));
+		programProperties.setIsProcessEditionSame(String.valueOf(vars.get(FlowVariableConstant.IS_PROCESS_EDITION_SAME)));
+		if(vars.containsKey(FlowVariableConstant.DEVIATION)) {
+			programProperties.setDeviation(String.valueOf(vars.get(FlowVariableConstant.DEVIATION)));
 		}
-		if(vars.containsKey(FlowVariableContants.CURED_NODE_ID)){
-			programProperties.setCuredNodeId(Func.toLong(vars.get(FlowVariableContants.CURED_NODE_ID)));
+		if(vars.containsKey(FlowVariableConstant.CURED_NODE_ID)){
+			programProperties.setCuredNodeId(Func.toLong(vars.get(FlowVariableConstant.CURED_NODE_ID)));
 		}
-		if(vars.containsKey(FlowContants.NODE_ID)){
-			programProperties.setNodeId(Func.toLong(vars.get(FlowContants.NODE_ID)));
+		if(vars.containsKey(FlowConstant.NODE_ID)){
+			programProperties.setNodeId(Func.toLong(vars.get(FlowConstant.NODE_ID)));
 		}
-		programProperties.setCureProgramUseable(String.valueOf(vars.get(FlowContants.CURE_PROGRAM_USEABLE)));
+		programProperties.setCureProgramUseable(String.valueOf(vars.get(FlowConstant.CURE_PROGRAM_USEABLE)));
 
-		programProperties.setTeamLeaderId(Func.toLong(vars.get(FlowVariableContants.TEAM_LEADER)));
-		programProperties.setProgrammerId(Func.toLong(vars.get(FlowVariableContants.PROGRAMMER)));
-		programProperties.setCheckerId(Func.toLong(vars.get(FlowVariableContants.CHECKER)));
-		programProperties.setSeniorId(Func.toLong(vars.get(FlowVariableContants.SENIOR)));
+		programProperties.setTeamLeaderId(Func.toLong(vars.get(FlowVariableConstant.TEAM_LEADER)));
+		programProperties.setProgrammerId(Func.toLong(vars.get(FlowVariableConstant.PROGRAMMER)));
+		programProperties.setCheckerId(Func.toLong(vars.get(FlowVariableConstant.CHECKER)));
+		programProperties.setSeniorId(Func.toLong(vars.get(FlowVariableConstant.SENIOR)));
 
-		programProperties.setProgramNo(programProperties.getDrawingNo()+"-"+programProperties.getProcessNo()+"-"+programProperties.getProcessEdition());
+		programProperties.setProgramNo(Func.toStr(vars.get(FlowVariableConstant.PROGRAM_NO)));
 
-		programProperties.setActProgrammerId(Func.toLong(vars.get(FlowVariableContants.ACT_PROGRAMMER)));
-		programProperties.setActCheckerId(Func.toLong(vars.get(FlowVariableContants.ACT_CHECKER)));
-		programProperties.setActSeniorId(Func.toLong(vars.get(FlowVariableContants.ACT_SENIOR)));
+		programProperties.setActProgrammerId(Func.toLong(vars.get(FlowVariableConstant.ACT_PROGRAMMER)));
+		programProperties.setActCheckerId(Func.toLong(vars.get(FlowVariableConstant.ACT_CHECKER)));
+		programProperties.setActSeniorId(Func.toLong(vars.get(FlowVariableConstant.ACT_SENIOR)));
 		programProperties.setProgrammerName(Func.toStr(vars.get("programmerName")));
 
-		programProperties.setProgramOnMachine(Func.toStr(vars.get(FlowVariableContants.PROGRAM_ON_MACHINE)));
+		programProperties.setProgramOnMachine(Func.toStr(vars.get(FlowVariableConstant.PROGRAM_ON_MACHINE)));
 	}
 	/**
 	 * 娴佺▼鏄惁鍦ㄨ繘琛�
@@ -183,15 +178,15 @@
 	 */
 	public ProduceDivision putDefaultAssignees(Map<String, Object> vars,String drawingNo,String defaultAssignee){
 		ProduceDivision div = produceDivisionService.getByDrawingNoWithQinzhe(drawingNo);
-		vars.put(FlowVariableContants.TEAM_LEADER,div.getTeamLeaderId());
-		vars.put(FlowVariableContants.PROGRAMMER,div.getProgrammerId());
-		vars.put(FlowVariableContants.CHECKER,div.getCheckerId());
-		vars.put(FlowVariableContants.SENIOR,div.getSeniorId());
+		vars.put(FlowVariableConstant.TEAM_LEADER,div.getTeamLeaderId());
+		vars.put(FlowVariableConstant.PROGRAMMER,div.getProgrammerId());
+		vars.put(FlowVariableConstant.CHECKER,div.getCheckerId());
+		vars.put(FlowVariableConstant.SENIOR,div.getSeniorId());
 		if(StringUtils.isNotBlank(defaultAssignee)) {
-			vars.put(FlowVariableContants.ASSIGNEE, defaultAssignee);//绗竴涓鎵圭敤鎴凤細缁勯暱
+			vars.put(FlowVariableConstant.ASSIGNEE, defaultAssignee);//绗竴涓鎵圭敤鎴凤細缁勯暱
 		}
 
-		vars.put(FlowContants.PROGRAMMER_NAME, userCommonService.getUserNameById(div.getProgrammerId()));
+		vars.put(FlowConstant.PROGRAMMER_NAME, userCommonService.getUserNameById(div.getProgrammerId()));
 		return div;
 	}
 
@@ -202,27 +197,27 @@
 	 */
 	public void putFlowVariablesByNode(Map<String, Object> vars, NcNode programPackageNode){
 		//鏈哄簥缂栧彿
-		vars.put(FlowVariableContants.MACHINE_CODE,programPackageNode.getMachineCode());
-		vars.put(FlowVariableContants.MACHINE_GROUP_CODE,programPackageNode.getMachineGroupCode());
+		vars.put(FlowVariableConstant.MACHINE_CODE,programPackageNode.getMachineCode());
+		vars.put(FlowVariableConstant.MACHINE_GROUP_CODE,programPackageNode.getMachineGroupCode());
 
 		Machine machine = machineService.getByCode(programPackageNode.getMachineCode());
 		//鏈哄簥鍨嬪彿
 		if(machine != null) {
-			vars.put(FlowVariableContants.MACHINE_MODE, machine.getName());
+			vars.put(FlowVariableConstant.MACHINE_MODE, machine.getName());
 		}
-		vars.put(FlowVariableContants.PROCESS_NO,programPackageNode.getProcessNo());
-		vars.put(FlowVariableContants.PROCESS_NAME,programPackageNode.getProcessName());
-		vars.put(FlowVariableContants.PROCESS_EDITION,programPackageNode.getProcessEdition());
-		vars.put(FlowVariableContants.CRAFT_EDITION,programPackageNode.getCraftEdition());
+		vars.put(FlowVariableConstant.PROCESS_NO,programPackageNode.getProcessNo());
+		vars.put(FlowVariableConstant.PROCESS_NAME,programPackageNode.getProcessName());
+		vars.put(FlowVariableConstant.PROCESS_EDITION,programPackageNode.getProcessEdition());
+		vars.put(FlowVariableConstant.CRAFT_EDITION,programPackageNode.getCraftEdition());
 
-		vars.put(FlowVariableContants.DRAWING_NO,programPackageNode.getDrawingNo());
-		vars.put(FlowVariableContants.DRAWING_NO_EDITION,programPackageNode.getDrawingNoEdition());
+		vars.put(FlowVariableConstant.DRAWING_NO,programPackageNode.getDrawingNo());
+		vars.put(FlowVariableConstant.DRAWING_NO_EDITION,programPackageNode.getDrawingNoEdition());
 
-		vars.put(FlowVariableContants.PROGRAM_PACKAGE_NAME,programPackageNode.getName());
+		vars.put(FlowVariableConstant.PROGRAM_PACKAGE_NAME,programPackageNode.getName());
 
-		vars.put(FlowVariableContants.PRODUCT_MODEL,programPackageNode.getProductModel());
-		vars.put(FlowContants.NODE_ID, programPackageNode.getId());
-		vars.put(FlowVariableContants.WORKSHOP,nodeDeptQueryService.getWorkshopNameByMachineCode(programPackageNode.getMachineCode()));
+		vars.put(FlowVariableConstant.PRODUCT_MODEL,programPackageNode.getProductModel());
+		vars.put(FlowConstant.NODE_ID, programPackageNode.getId());
+		vars.put(FlowVariableConstant.WORKSHOP,nodeDeptQueryService.getWorkshopNameByMachineCode(programPackageNode.getMachineCode()));
 
 	}
 }
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowProgramProperties.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowProgramProperties.java
index 83d6729..8196b3e 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowProgramProperties.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowProgramProperties.java
@@ -2,8 +2,6 @@
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.mdm.flow.constants.FlowContants;
 
 import java.time.LocalDate;
 
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowTransferService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowTransferService.java
index 664f386..4ed6c60 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowTransferService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowTransferService.java
@@ -1,19 +1,13 @@
 package org.springblade.mdm.flow.service;
 
 import lombok.AllArgsConstructor;
-import org.flowable.engine.HistoryService;
-import org.flowable.engine.RuntimeService;
 import org.flowable.engine.TaskService;
-import org.flowable.engine.history.HistoricProcessInstance;
-import org.flowable.engine.runtime.ProcessInstance;
 import org.flowable.task.api.Task;
 import org.flowable.task.service.impl.persistence.entity.TaskEntity;
-import org.springblade.mdm.flow.constants.FlowContants;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Date;
-import java.util.Map;
 import java.util.UUID;
 
 @AllArgsConstructor
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/LockFlowService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/LockFlowService.java
index 7d38e76..efe92d0 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/LockFlowService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/LockFlowService.java
@@ -8,8 +8,8 @@
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.mdm.basesetting.producedivision.entity.ProduceDivision;
 import org.springblade.mdm.basesetting.producedivision.service.ProduceDivisionService;
-import org.springblade.mdm.flow.constants.FlowContants;
-import org.springblade.mdm.flow.constants.FlowVariableContants;
+import org.springblade.mdm.flow.constants.FlowConstant;
+import org.springblade.mdm.flow.constants.FlowVariableConstant;
 import org.springblade.mdm.flow.entity.FlowProgramFile;
 import org.springblade.mdm.program.entity.NcNode;
 import org.springblade.mdm.program.service.NcNodeService;
@@ -42,21 +42,21 @@
 		flowCommonService.putFlowVariablesByNode(vars,programPackage);
 
 		ProduceDivision div = produceDivisionService.getByDrawingNoWithQinzhe(programPackage.getDrawingNo());
-		vars.put(FlowVariableContants.PROGRAMMER,div.getProgrammerId());
-		vars.put(FlowVariableContants.SENIOR,div.getSeniorId());
-		vars.put(FlowVariableContants.ASSIGNEE,div.getSeniorId());//瀹℃壒鐢ㄦ埛:楂樺笀
+		vars.put(FlowVariableConstant.PROGRAMMER,div.getProgrammerId());
+		vars.put(FlowVariableConstant.SENIOR,div.getSeniorId());
+		vars.put(FlowVariableConstant.ASSIGNEE,div.getSeniorId());//瀹℃壒鐢ㄦ埛:楂樺笀
 
-		vars.put(FlowVariableContants.TITLE,programPackage.getName()+"绋嬪簭瑙i攣");
+		vars.put(FlowVariableConstant.TITLE,programPackage.getName()+"绋嬪簭瑙i攣");
 
-		vars.put(FlowVariableContants.MY_PROCESS_NAME,"瑙i攣娴佺▼");
+		vars.put(FlowVariableConstant.MY_PROCESS_NAME,"瑙i攣娴佺▼");
 		vars.put("comment", "瑙i攣绋嬪簭"+programPackage.getName());
 		vars.put("unlockReason", unlockReason);
 
 		String userId = String.valueOf(AuthUtil.getUserId());
 		identityService.setAuthenticatedUserId(userId);//璁剧疆娴佺▼鍙戣捣浜�
-		vars.put(FlowVariableContants.ACT_PROGRAMMER,userId);
+		vars.put(FlowVariableConstant.ACT_PROGRAMMER,userId);
 
-		ProcessInstance inst = runtimeService.startProcessInstanceByKey(FlowContants.UNLOCK_PROCESS_KEY,nodeId+"",vars);
+		ProcessInstance inst = runtimeService.startProcessInstanceByKey(FlowConstant.UNLOCK_PROCESS_KEY,nodeId+"",vars);
 
 		programPackage.setProcessInstanceId(inst.getId());
 		this.nodeService.updateById(programPackage);
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/MesSyncService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/MesSyncService.java
new file mode 100644
index 0000000..096d5a8
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/MesSyncService.java
@@ -0,0 +1,143 @@
+
+package org.springblade.mdm.flow.service;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springblade.core.tool.utils.DateUtil;
+import org.springblade.mdm.flow.entity.MesSync;
+import org.springblade.mdm.flow.mapper.MesSyncMapper;
+import org.springblade.mdm.flow.props.MesInterfaceProperties;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import java.net.URI;
+import java.net.http.HttpClient;
+import java.net.http.HttpRequest;
+import java.net.http.HttpResponse;
+import java.time.Duration;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * MES鍥哄寲鍚屾 澶勭悊鏈嶅姟
+ *
+ * @author yangys
+ */
+@Slf4j
+@Service
+public class MesSyncService extends ServiceImpl<MesSyncMapper, MesSync> {
+	@Autowired
+	private MesInterfaceProperties mesInterfaceProperties;
+	/**
+	 * 鍚屾鏁版嵁鍒癿es
+	 */
+	@Transactional
+	public void syncToMes(){
+		List<MesSync> syncList = lambdaQuery().ne(MesSync::getStatus,MesSync.STATUS_SUCCESS)
+			.lt(mesInterfaceProperties.getMaxTryTimes()>0,MesSync::getTryTimes,mesInterfaceProperties.getMaxTryTimes())
+			.last("limit 100").list();
+		if(syncList.isEmpty()){
+			log.info("mes鍚屾琛ㄦ棤鏁版嵁锛岃繑鍥炪��");
+			return;
+		}
+		JSONObject bodyJson = buildRequestJson(syncList);
+		int code = postData(bodyJson);
+
+		int status;
+		if(code == 200){
+			status = MesSync.STATUS_SUCCESS;
+		}else{
+			status = MesSync.STATUS_FAILED;
+		}
+		syncList.forEach(sync->{
+			sync.setStatus(codeToStatus(code));
+			sync.increaseTryTimes();
+		});
+		updateBatchById(syncList);
+	}
+
+	int postData(JSONObject bodyJson){
+		HttpClient client = HttpClient.newBuilder()
+			.connectTimeout(Duration.ofSeconds(10))
+			.build();
+
+		// 鏋勫缓JSON璇锋眰浣�
+		String json = bodyJson.toJSONString();
+
+		HttpRequest request = HttpRequest.newBuilder()
+			.uri(URI.create(mesInterfaceProperties.getOperationUpdateEndpoint()))
+			.header("Content-Type", "application/json")
+			.header("Accept", "application/json")
+			.POST(HttpRequest.BodyPublishers.ofString(json))
+			.build();
+
+		try {
+			HttpResponse<String> response = client.send(
+				request, HttpResponse.BodyHandlers.ofString());
+
+			System.out.println("Status Code: " + response.statusCode());
+			System.out.println("Response Body: " + response.body());
+
+			return response.statusCode();
+
+		} catch (Exception e) {
+			log.error("鍚屾澶辫触",e);
+			return 500;
+		}
+	}
+
+	/**
+	 * 鏋勫缓鏁版嵁浣�
+	 * @param syncList 鍚屾鏁版嵁鍒楄〃
+	 * @return 鏁版嵁jsno
+	 */
+	JSONObject buildRequestJson(List<MesSync> syncList){
+		JSONObject jsonObject = new JSONObject();
+
+		JSONArray dataList = new JSONArray();
+		for(MesSync sync : syncList){
+			dataList.add(buildOneJson(sync));
+		}
+		jsonObject.put("batchData", dataList);
+
+		return jsonObject;
+	}
+
+	/**
+	 * 鏋勫缓涓�鏉$殑json
+	 * @param sync
+	 * @return 鍚屾鏁版嵁json
+	 */
+	JSONObject buildOneJson(MesSync sync){
+		JSONObject item = new JSONObject();
+		item.put("operationId",sync.getOperationId());
+		item.put("programNo",sync.getProgramNo());
+		item.put("curedTime",DateUtil.formatDateTime(sync.getCuredTime()));
+
+		return item;
+	}
+
+	int codeToStatus(int code){
+		if(code == 200){
+			return MesSync.STATUS_SUCCESS;
+		}else{
+			return MesSync.STATUS_FAILED;
+		}
+	}
+
+	@Transactional
+	public void saveAndSync(MesSync sync){
+		save(sync);
+		JSONObject bodyJson = buildRequestJson(Collections.singletonList(sync));
+		int code = postData(bodyJson);
+
+		sync.setStatus(codeToStatus(code));
+		sync.increaseTryTimes();
+		updateById(sync);
+	}
+
+
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ProgramOnMachineExportService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ProgramOnMachineExportService.java
index 50225aa..0416a43 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ProgramOnMachineExportService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ProgramOnMachineExportService.java
@@ -6,25 +6,16 @@
 import org.flowable.engine.HistoryService;
 import org.flowable.engine.history.HistoricProcessInstance;
 import org.flowable.engine.history.HistoricProcessInstanceQuery;
-import org.springblade.core.oss.OssTemplate;
 import org.springblade.core.tool.utils.DateUtil;
 import org.springblade.core.tool.utils.Func;
-import org.springblade.mdm.basesetting.machine.entity.Machine;
 import org.springblade.mdm.basesetting.machine.service.MachineService;
-import org.springblade.mdm.basesetting.producedivision.service.QinzheFgbService;
 import org.springblade.mdm.commons.service.ParamService;
-import org.springblade.mdm.flow.constants.FlowContants;
-import org.springblade.mdm.flow.constants.FlowVariableContants;
+import org.springblade.mdm.flow.constants.FlowConstant;
+import org.springblade.mdm.flow.constants.FlowVariableConstant;
 import org.springblade.mdm.flow.vo.FlowVO;
 import org.springblade.mdm.flow.vo.ProgramOnMachineQueryVO;
-import org.springblade.mdm.program.service.NcNodeHisService;
-import org.springblade.mdm.program.service.NcNodeService;
-import org.springblade.system.feign.IDictBizClient;
 import org.springframework.stereotype.Service;
 
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
 import java.util.*;
 
 /**
@@ -47,10 +38,10 @@
 	 */
 	public IPage<FlowVO> finishedPage(IPage<FlowVO> page, ProgramOnMachineQueryVO queryVO) {
 		//鍥哄寲閲岃矾鏉戝畼
-		HistoricProcessInstanceQuery query = this.historyService.createHistoricProcessInstanceQuery().finished().processDefinitionKey(FlowContants.CURE_PROCESS_KEY).includeProcessVariables();
+		HistoricProcessInstanceQuery query = this.historyService.createHistoricProcessInstanceQuery().finished().processDefinitionKey(FlowConstant.CURE_PROCESS_KEY).includeProcessVariables();
 			//.finished() // 鍙煡璇㈠凡瀹屾垚鐨勬祦绋�.unfinished() // 鏌ヨ鏈畬鎴愮殑娴佺▼
-		query.variableNotExists(FlowVariableContants.EXCEPTION);//闈炲紓甯告祦绋�
-		query.variableValueEquals(FlowVariableContants.PROGRAM_ON_MACHINE,FlowContants.Y);//閫夋嫨鐜板満缂栧埗鐨�
+		query.variableNotExists(FlowVariableConstant.EXCEPTION);//闈炲紓甯告祦绋�
+		query.variableValueEquals(FlowVariableConstant.PROGRAM_ON_MACHINE, FlowConstant.Y);//閫夋嫨鐜板満缂栧埗鐨�
 		/*
 		//杞﹀簥鎴栬�呴�夋嫨鐜板満缂栧埗鐨勭▼搴�
 		String turnVal = paramService.turninngValue();
@@ -71,7 +62,7 @@
 		}
 		if(Func.isNotEmpty(queryVO.getDrawingNo())) {
 			String likeVal = "%" + queryVO.getDrawingNo() + "%";
-			query.variableValueLike(FlowVariableContants.DRAWING_NO,likeVal);
+			query.variableValueLike(FlowVariableConstant.DRAWING_NO,likeVal);
 		}
 		query.orderByProcessInstanceEndTime().desc(); // 鎸夌粨鏉熸椂闂撮檷搴忔帓鍒�
 		page.setTotal(query.count());
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 1477156..1d64fe4 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
@@ -10,8 +10,8 @@
 import org.springblade.core.oss.model.BladeFile;
 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.constants.FlowConstant;
+import org.springblade.mdm.flow.constants.FlowVariableConstant;
 import org.springblade.mdm.flow.entity.FlowProgramFile;
 import org.springblade.mdm.flow.vo.ReplaceFlowStartVO;
 import org.springblade.mdm.flow.vo.ReplaceUploadVO;
@@ -107,16 +107,16 @@
 		flowCommonService.putFlowVariablesByNode(vars,programPackage);
 		flowCommonService.putDefaultAssignees(vars,programPackage.getDrawingNo(),startVO.getAssignee()+"");
 
-		vars.put(FlowVariableContants.TITLE,startVO.getTitle());
+		vars.put(FlowVariableConstant.TITLE,startVO.getTitle());
 
 		vars.put("comment", startVO.getComment());
-		vars.put(FlowVariableContants.MY_PROCESS_NAME,"鏇挎崲娴佺▼");
+		vars.put(FlowVariableConstant.MY_PROCESS_NAME,"鏇挎崲娴佺▼");
 
 		String userId = String.valueOf(AuthUtil.getUserId());
 		identityService.setAuthenticatedUserId(userId);//璁剧疆娴佺▼鍙戣捣浜�
-		vars.put(FlowVariableContants.ACT_PROGRAMMER,userId);//鍙戣捣浜烘寜鐓у疄闄呯紪绋嬩汉鍛樼畻
+		vars.put(FlowVariableConstant.ACT_PROGRAMMER,userId);//鍙戣捣浜烘寜鐓у疄闄呯紪绋嬩汉鍛樼畻
 
-		ProcessInstance inst = runtimeService.startProcessInstanceByKey(FlowContants.REPLACE_PROCESS_KEY,startVO.getNodeId()+"",vars);
+		ProcessInstance inst = runtimeService.startProcessInstanceByKey(FlowConstant.REPLACE_PROCESS_KEY,startVO.getNodeId()+"",vars);
 		//鏇存柊鑺傜偣鐨勬祦绋媔d锛岄伩鍏嶉噸澶嶅彂璧锋祦绋�
 		programPackage.setProcessInstanceId(inst.getId());
 		this.nodeService.updateById(programPackage);
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/WIthdrawService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/WIthdrawService.java
index 177b64e..84a4f40 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/WIthdrawService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/WIthdrawService.java
@@ -5,9 +5,7 @@
 import org.flowable.engine.repository.ProcessDefinition;
 import org.flowable.engine.runtime.ProcessInstance;
 import org.flowable.task.api.Task;
-import org.springblade.core.launch.constant.FlowConstant;
 import org.springblade.core.secure.utils.AuthUtil;
-import org.springblade.mdm.flow.constants.FlowContants;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
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 85f0557..399d7f7 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
@@ -11,8 +11,8 @@
 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.constants.FlowConstant;
+import org.springblade.mdm.flow.constants.FlowVariableConstant;
 import org.springblade.mdm.flow.service.FlowCommonService;
 import org.springblade.mdm.flow.vo.BatchDispatchVO;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -44,7 +44,7 @@
 
 		Map<String, Object> variables = Kv.create();
 		variables.put("assignee", batchDispatchVO.getAssignee());
-		variables.put("approve", FlowContants.Y);//榛樿灏辨槸閫氳繃
+		variables.put("approve", FlowConstant.Y);//榛樿灏辨槸閫氳繃
 		String taskId;
 		String processInstanceId;
 		String comment = batchDispatchVO.getComment();
@@ -53,7 +53,7 @@
 			taskId = taskIds[i];
 			processInstanceId = batchDispatchVO.getProcessInstanceIds()[i];
 
-			runtimeService.setVariable(processInstanceId,FlowContants.PROGRAMMER_NAME,userCommonService.getUserNameById(Func.toLong(batchDispatchVO.getAssignee())));
+			runtimeService.setVariable(processInstanceId, FlowConstant.PROGRAMMER_NAME,userCommonService.getUserNameById(Func.toLong(batchDispatchVO.getAssignee())));
 
 			Task task = getTask(taskId);
 
@@ -82,8 +82,8 @@
 
 		Map<String, Object> variables = Kv.create();
 		//variables.put("assignee", batchDispatchVO.getAssignee());
-		variables.put("approve", FlowContants.Y);//鑷姩鍒嗘淳榛樿灏辨槸閫氳繃
-		variables.put(FlowVariableContants.COMMENT,batchDispatchVO.getComment());
+		variables.put("approve", FlowConstant.Y);//鑷姩鍒嗘淳榛樿灏辨槸閫氳繃
+		variables.put(FlowVariableConstant.COMMENT,batchDispatchVO.getComment());
 		ProcessInstance processInstance;
 		Object programmer;
 		for(int i=0;i<taskIds.length;i++) {
@@ -98,7 +98,7 @@
 			Object programmerId = getAutoProgrammer(processInstanceId);
 			variables.put("assignee", programmerId);
 
-			runtimeService.setVariable(processInstanceId,FlowContants.PROGRAMMER_NAME,userCommonService.getUserNameById(Func.toLong(programmerId)));
+			runtimeService.setVariable(processInstanceId, FlowConstant.PROGRAMMER_NAME,userCommonService.getUserNameById(Func.toLong(programmerId)));
 
 
 			if (StringUtil.isNoneBlank(processInstanceId, batchDispatchVO.getComment())) {
@@ -125,9 +125,9 @@
 		ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().includeProcessVariables()
 			.processInstanceId(processInstanceId)
 			.singleResult();
-		Object programmer = processInstance.getProcessVariables().get(FlowVariableContants.PROGRAMMER);
+		Object programmer = processInstance.getProcessVariables().get(FlowVariableConstant.PROGRAMMER);
 		if(programmer == null){
-			throw new ServiceException(processInstance.getProcessVariables().get(FlowVariableContants.TITLE)+":鏈壘鍒扮紪绋嬩汉鍛�");
+			throw new ServiceException(processInstance.getProcessVariables().get(FlowVariableConstant.TITLE)+":鏈壘鍒扮紪绋嬩汉鍛�");
 		}
 		return programmer;
 	}
@@ -145,8 +145,8 @@
 
 		//瀹℃壒缁撴灉鍜屽鐞嗕汉閮戒竴鏍风殑
 		Map<String, Object> variables = Kv.create();
-		variables.put(FlowVariableContants.APPROVE, batchDispatchVO.getApprove());
-		variables.put(FlowVariableContants.COMMENT, batchDispatchVO.getComment());
+		variables.put(FlowVariableConstant.APPROVE, batchDispatchVO.getApprove());
+		variables.put(FlowVariableConstant.COMMENT, batchDispatchVO.getComment());
 
 		for(int i=0;i<taskIds.length;i++) {
 			taskId = taskIds[i];
@@ -157,9 +157,9 @@
 			if (StringUtil.isNoneBlank(processInstanceId, batchDispatchVO.getComment())) {
 				taskService.addComment(taskId, processInstanceId, batchDispatchVO.getComment());
 			}
-			if(FlowContants.N.equals(batchDispatchVO.getApprove())) {
+			if(FlowConstant.N.equals(batchDispatchVO.getApprove())) {
 				//椹冲洖锛屾煡璇㈠疄闄呯紪绋嬩汉鍛� 椹冲洖
-				variables.put(FlowVariableContants.ASSIGNEE, getActualProgrammer(processInstanceId));
+				variables.put(FlowVariableConstant.ASSIGNEE, getActualProgrammer(processInstanceId));
 			}
 
 			taskService.complete(taskId, variables);
@@ -175,9 +175,9 @@
 		ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().includeProcessVariables()
 			.processInstanceId(processInstanceId)
 			.singleResult();
-		Object actProgrammer = processInstance.getProcessVariables().get(FlowVariableContants.ACT_PROGRAMMER);
+		Object actProgrammer = processInstance.getProcessVariables().get(FlowVariableConstant.ACT_PROGRAMMER);
 		if(actProgrammer == null){
-			throw new ServiceException(processInstance.getProcessVariables().get(FlowVariableContants.TITLE)+":鏈壘鍒扮紪绋嬩汉鍛�");
+			throw new ServiceException(processInstance.getProcessVariables().get(FlowVariableConstant.TITLE)+":鏈壘鍒扮紪绋嬩汉鍛�");
 		}
 		return actProgrammer;
 	}
@@ -211,11 +211,11 @@
 
 		//瀹℃壒缁撴灉鍜屽鐞嗕汉閮戒竴鏍风殑
 		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());
+		variables.put(FlowVariableConstant.APPROVE, FlowConstant.Y);
+		variables.put(FlowVariableConstant.COMMENT, batchDispatchVO.getComment());
+		variables.put(FlowVariableConstant.PROGRAM_ON_MACHINE, FlowConstant.Y);//鐜板満缂栧埗:鏄�
+		variables.put(FlowVariableConstant.ACT_PROGRAMMER, AuthUtil.getUserId()+"");//瀹為檯缂栧埗
+		variables.put(FlowVariableConstant.ASSIGNEE,batchDispatchVO.getAssignee());
 		for(int i=0;i<taskIds.length;i++) {
 			taskId = taskIds[i];
 			processInstanceId = batchDispatchVO.getProcessInstanceIds()[i];
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/CureFlowCompleteService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/CureFlowCompleteService.java
index f5168db..b7b02ec 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/CureFlowCompleteService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/CureFlowCompleteService.java
@@ -10,8 +10,7 @@
 import org.springblade.mdm.basesetting.machine.entity.Machine;
 import org.springblade.mdm.basesetting.machine.service.MachineService;
 import org.springblade.mdm.commons.service.ParamService;
-import org.springblade.mdm.flow.constants.FlowContants;
-import org.springblade.mdm.flow.constants.FlowVariableContants;
+import org.springblade.mdm.flow.constants.FlowVariableConstant;
 import org.springblade.mdm.flow.service.FlowCommonService;
 import org.springblade.mdm.flow.service.FlowProgramFileService;
 import org.springblade.mdm.flow.service.FlowProgramProperties;
@@ -49,7 +48,7 @@
 
 		if(task.getTaskDefinitionKey().equals("cureProgramTask") ) {
 			//缂栧埗鑺傜偣 璁板綍瀹為檯缂栫▼鍛�
-			variables.put(FlowVariableContants.ACT_PROGRAMMER,Func.toStr(AuthUtil.getUserId()));
+			variables.put(FlowVariableConstant.ACT_PROGRAMMER,Func.toStr(AuthUtil.getUserId()));
 		}
 		if (StringUtil.isNoneBlank(processInstanceId, comment)) {
 			taskService.addComment(taskId, processInstanceId, comment);
@@ -58,9 +57,9 @@
 		if (Func.isEmpty(variables)) {
 			variables = Kv.create();
 		}
-		variables.put(FlowVariableContants.LAST_STEP_USER_NICKNAME, AuthUtil.getNickName());
+		variables.put(FlowVariableConstant.LAST_STEP_USER_NICKNAME, AuthUtil.getNickName());
 
-		variables.remove(FlowVariableContants.PROCESS_EDITION);//涓嶈鍗囩増浜�
+		variables.remove(FlowVariableConstant.PROCESS_EDITION);//涓嶈鍗囩増浜�
 
 
 		taskService.complete(taskId, variables);
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/DefaultFlowCompleteService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/DefaultFlowCompleteService.java
index 771340e..b30baf9 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/DefaultFlowCompleteService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/DefaultFlowCompleteService.java
@@ -1,12 +1,5 @@
 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.FlowProgramFileService;
 import org.springblade.mdm.program.service.NcNodeAutoCreateService;
 import org.springframework.beans.factory.annotation.Autowired;
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 a8eca30..2b62ced 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
@@ -6,11 +6,9 @@
 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.constants.FlowVariableContants;
+import org.springblade.mdm.flow.constants.FlowVariableConstant;
 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;
@@ -46,7 +44,7 @@
 		String operateResult = this.getApproveResult(variables);
 
 		if(task.getTaskDefinitionKey().equals("replaceProgrammingTask")) {//缂栧埗鑺傜偣
-			variables.put(FlowVariableContants.ACT_PROGRAMMER,Func.toStr(AuthUtil.getUserId()));
+			variables.put(FlowVariableConstant.ACT_PROGRAMMER,Func.toStr(AuthUtil.getUserId()));
 
 			flowProgramFileService.checkProgramFiles(processInstanceId,"Y".equals(operateResult));
 		}
@@ -54,13 +52,13 @@
 			taskService.addComment(taskId, processInstanceId, comment);
 		}
 
-		variables.put(FlowVariableContants.LAST_STEP_USER_NICKNAME, AuthUtil.getNickName());
+		variables.put(FlowVariableConstant.LAST_STEP_USER_NICKNAME, AuthUtil.getNickName());
 
 		if(!variables.containsKey("assignee")) {
 			throw new ServiceException("璇锋寚瀹氭祦绋嬩笅涓�姝ュ鐞嗕汉");
 		}
 
-		variables.remove(FlowVariableContants.PROCESS_EDITION);//涓嶈鍗囩増浜�
+		variables.remove(FlowVariableConstant.PROCESS_EDITION);//涓嶈鍗囩増浜�
 
 		taskService.complete(taskId, variables);
 	}
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
index 5daff98..bacd22e 100644
--- 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
@@ -7,8 +7,7 @@
 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.constants.FlowVariableConstant;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -37,16 +36,16 @@
 			throw new ServiceException("璇锋寚瀹氭祦绋嬩笅涓�姝ュ鐞嗕汉");
 		}
 		String operateResult = this.getApproveResult(variables);
-		variables.put(FlowVariableContants.LAST_STEP_USER_NICKNAME, AuthUtil.getNickName());
+		variables.put(FlowVariableConstant.LAST_STEP_USER_NICKNAME, AuthUtil.getNickName());
 
 		if(task.getTaskDefinitionKey().equals("appendProgrammingTask") ) {//缂栧埗鑺傜偣
 			//璁板綍瀹為檯缂栫▼鍛�
-			variables.put(FlowVariableContants.ACT_PROGRAMMER,Func.toStr(AuthUtil.getUserId()));
+			variables.put(FlowVariableConstant.ACT_PROGRAMMER,Func.toStr(AuthUtil.getUserId()));
 
 		}else if(task.getTaskDefinitionKey().equals("appendCheckTask")){
-			variables.put(FlowVariableContants.ACT_CHECKER,Func.toStr(AuthUtil.getUserId()));
+			variables.put(FlowVariableConstant.ACT_CHECKER,Func.toStr(AuthUtil.getUserId()));
 		}else if(task.getTaskDefinitionKey().equals("appendApproveTask")){
-			variables.put(FlowVariableContants.ACT_SENIOR,Func.toStr(AuthUtil.getUserId()));
+			variables.put(FlowVariableConstant.ACT_SENIOR,Func.toStr(AuthUtil.getUserId()));
 		}
 
 
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 2315566..888c79b 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
@@ -11,8 +11,8 @@
 import org.springblade.mdm.basesetting.machine.service.MachineService;
 import org.springblade.mdm.commons.service.ParamService;
 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.constants.FlowConstant;
+import org.springblade.mdm.flow.constants.FlowVariableConstant;
 import org.springblade.mdm.flow.service.FlowCommonService;
 import org.springblade.mdm.flow.service.FlowProgramFileService;
 import org.springblade.mdm.flow.service.FlowProgramProperties;
@@ -57,36 +57,36 @@
 
 		if(task.getTaskDefinitionKey().equals("programmingTask") ) {//缂栧埗鑺傜偣
 			//璁板綍瀹為檯缂栫▼鍛�
-			variables.put(FlowVariableContants.ACT_PROGRAMMER,Func.toStr(AuthUtil.getUserId()));
+			variables.put(FlowVariableConstant.ACT_PROGRAMMER,Func.toStr(AuthUtil.getUserId()));
 
-			String programOnMachine = Func.toStr(variables.getOrDefault(FlowVariableContants.PROGRAM_ON_MACHINE,FlowContants.N));//鏄惁鐜板満缂栫▼
-			if(this.needUploadProgramFile(props.getMachineCode()) && programOnMachine.equals(FlowContants.N)) {
-				flowProgramFileService.checkProgramFiles(processInstanceId, FlowContants.Y.equals(operateResult));
+			String programOnMachine = Func.toStr(variables.getOrDefault(FlowVariableConstant.PROGRAM_ON_MACHINE, FlowConstant.N));//鏄惁鐜板満缂栫▼
+			if(this.needUploadProgramFile(props.getMachineCode()) && programOnMachine.equals(FlowConstant.N)) {
+				flowProgramFileService.checkProgramFiles(processInstanceId, FlowConstant.Y.equals(operateResult));
 			}
 		}else if(task.getTaskDefinitionKey().equals("teamLeaderTask")){
-			if(FlowContants.Y.equals(operateResult)) {
-				runtimeService.setVariable(task.getExecutionId(),FlowContants.PROGRAMMER_NAME,userCommonService.getUserNameById(Func.toLong(variables.get("assignee"))));
+			if(FlowConstant.Y.equals(operateResult)) {
+				runtimeService.setVariable(task.getExecutionId(), FlowConstant.PROGRAMMER_NAME,userCommonService.getUserNameById(Func.toLong(variables.get("assignee"))));
 			}
 		}else if(task.getTaskDefinitionKey().equals("check")){
-			variables.put(FlowVariableContants.ACT_CHECKER,Func.toStr(AuthUtil.getUserId()));
+			variables.put(FlowVariableConstant.ACT_CHECKER,Func.toStr(AuthUtil.getUserId()));
 		}else if(task.getTaskDefinitionKey().equals("approveTask")){
-			variables.put(FlowVariableContants.ACT_SENIOR,Func.toStr(AuthUtil.getUserId()));
+			variables.put(FlowVariableConstant.ACT_SENIOR,Func.toStr(AuthUtil.getUserId()));
 		}
-		variables.remove(FlowVariableContants.PROGRAM_ON_MACHINE);//鍏朵粬鑺傜偣锛屽拷鐣ョ幇鍦虹紪绋嬫爣璁�
+		variables.remove(FlowVariableConstant.PROGRAM_ON_MACHINE);//鍏朵粬鑺傜偣锛屽拷鐣ョ幇鍦虹紪绋嬫爣璁�
 		if (StringUtil.isNoneBlank(processInstanceId, comment)) {
 			taskService.addComment(taskId, processInstanceId, comment);
 		}
 
-		variables.put(FlowVariableContants.LAST_STEP_USER_NICKNAME, AuthUtil.getNickName());
+		variables.put(FlowVariableConstant.LAST_STEP_USER_NICKNAME, AuthUtil.getNickName());
 
-		variables.remove(FlowVariableContants.PROCESS_EDITION);//涓嶈鍗囩増浜�
+		variables.remove(FlowVariableConstant.PROCESS_EDITION);//涓嶈鍗囩増浜�
 
 		if("confirmIsUseableTask".equals(task.getTaskDefinitionKey())){
-			variables.put(FlowContants.CURE_PROGRAM_USEABLE,operateResult);
+			variables.put(FlowConstant.CURE_PROGRAM_USEABLE,operateResult);
 
-			if(FlowContants.Y.equals(operateResult)) {
+			if(FlowConstant.Y.equals(operateResult)) {
 				//鍒ゅ畾鍙敤锛岃褰曚负瀹為檯缂栫▼鍛�
-				variables.put(FlowVariableContants.ACT_PROGRAMMER,Func.toStr(AuthUtil.getUserId()));
+				variables.put(FlowVariableConstant.ACT_PROGRAMMER,Func.toStr(AuthUtil.getUserId()));
 			}
 		}
 		taskService.complete(taskId, variables);
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/TaskAssignVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/TaskAssignVO.java
index ce6c1d4..cf5e743 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/TaskAssignVO.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/TaskAssignVO.java
@@ -3,10 +3,9 @@
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import org.apache.commons.lang3.StringUtils;
-import org.springblade.mdm.flow.constants.FlowContants;
+import org.springblade.mdm.flow.constants.FlowConstant;
 
 import java.time.LocalDate;
-import java.time.LocalDateTime;
 
 @Data
 @Schema(description = "浠诲姟璁″垝")
@@ -65,7 +64,7 @@
 	 * @return 鏄惁
 	 */
 	public boolean isTemporaryFlow(){
-		return FlowContants.Y.equals(isTempFlow);
+		return FlowConstant.Y.equals(isTempFlow);
 	}
 
 	/**
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/TodoQueryVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/TodoQueryVO.java
index d2d32e9..3d8b267 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/TodoQueryVO.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/TodoQueryVO.java
@@ -2,11 +2,13 @@
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 import org.springblade.core.mp.support.Query;
 import org.springframework.format.annotation.DateTimeFormat;
 
 import java.time.LocalDateTime;
 
+@EqualsAndHashCode(callSuper = true)
 @Data
 public class TodoQueryVO extends Query {
 	@Schema(description = "鍏抽敭瀛�")
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcNode.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcNode.java
index 1d21dec..9e7d424 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcNode.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcNode.java
@@ -255,4 +255,12 @@
 	public String subNodeParentIds(){
 		return this.parentIds+","+this.getId();
 	}
+
+	/**
+	 * 缁勮绋嬪簭鍚嶇О
+	 * @return 绋嬪簭鍚嶇О
+	 */
+	public String programName(){
+		return this.drawingNo+"-"+this.getProcessNo()+"-"+this.getProcessEdition();
+	}
 }
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/DncBackFileMapper.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/DncBackFileMapper.java
index f4325ca..33a6fba 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/DncBackFileMapper.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/DncBackFileMapper.java
@@ -10,10 +10,10 @@
 public interface DncBackFileMapper extends BladeMapper<DncBackFile> {
 
 	/**
-	 * DNC鍥炰紶鏂囦欢鍒嗛〉鏌ヨ
-	 * @param page
-	 * @param queryVO
-	 * @return
+	 * DNC鍥炰紶璁板綍鍒嗛〉鏌ヨ
+	 * @param page 鍒嗛〉淇℃伅
+	 * @param queryVO 鏌ヨ瀵硅薄
+	 * @return 鍒嗛〉鏍戞嵁
 	 */
 	IPage<DncBackFileVO> pageQuery(@Param("page")IPage<DncBackFile> page, @Param("query") DncBackFileQueryVO queryVO);
 
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/DncBackFileMapper.xml b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/DncBackFileMapper.xml
index 2955295..b070eb5 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/DncBackFileMapper.xml
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/DncBackFileMapper.xml
@@ -15,7 +15,7 @@
     <select id="pageQuery" resultType="org.springblade.mdm.program.vo.DncBackFileVO">
         select f.id,n.name name,m.code machine_code, m.name machine_name,f.create_time,n.process_instance_id
         from mdm_dnc_back_file f
-        join mdm_nc_node n on f.nc_node_id=n.id
+        join mdm_nc_node_his n on f.nc_node_id=n.id
         left join mdm_machine m on n.machine_code=m.code
 
        <where>
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeAutoCreateService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeAutoCreateService.java
index f7d2847..61d99b9 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeAutoCreateService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeAutoCreateService.java
@@ -5,7 +5,7 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.tool.utils.Func;
-import org.springblade.mdm.flow.constants.FlowContants;
+import org.springblade.mdm.flow.constants.FlowConstant;
 import org.springblade.mdm.flow.entity.FlowProgramFile;
 import org.springblade.mdm.flow.service.FlowCommonService;
 import org.springblade.mdm.flow.service.FlowProgramFileService;
@@ -43,9 +43,9 @@
 	@Transactional
 	public NcNode createNodeTreeToMachineGroup(FlowProgramProperties programProperties) {
 		NcNode root;
-		if(programProperties.getProcessDefinitionKey().equals(FlowContants.TRY_PROCESS_KEY)){
+		if(programProperties.getProcessDefinitionKey().equals(FlowConstant.TRY_PROCESS_KEY)){
 			if(Func.isEmpty(programProperties.getDeviation()) ||
-				(FlowContants.Y.equals(programProperties.getHasCuredProgram()) &&  FlowContants.N.equals(programProperties.getCureProgramUseable()))){
+				(FlowConstant.Y.equals(programProperties.getHasCuredProgram()) &&  FlowConstant.N.equals(programProperties.getCureProgramUseable()))){
 				//鏅�氳瘯鍒囷紝鎴栬�呮湁鍥哄寲涓嶅彲鐢紝寤虹珛璇曞垏鑺傜偣
 				//璇曞垏鏍硅妭鐐�
 				root = rootNodeByName(TRY_NAME);
@@ -59,7 +59,7 @@
 					root = createDeviationNode();
 				}
 			}
-		}else if(programProperties.getProcessDefinitionKey().equals(FlowContants.CURE_PROCESS_KEY)){
+		}else if(programProperties.getProcessDefinitionKey().equals(FlowConstant.CURE_PROCESS_KEY)){
 			root = rootNodeByName(CURE_NAME);
 			if(root == null){
 				root = createCureNode();
@@ -240,7 +240,6 @@
 				ncNode.setDeviation(programProperties.getDeviation());
 
 				if(NcNode.TYPE_PROGRAM_PACKAGE.equals(nodeType)) {//绋嬪簭鍖呰妭鐐癸紝鍒嗛厤绋嬪簭缂栧彿
-
 					ncNode.setProgramNo(programProperties.getProgramNo());
 				}
 			}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExportDNCService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExportDNCService.java
index f9ce583..2b10063 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExportDNCService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExportDNCService.java
@@ -13,7 +13,7 @@
 import org.springblade.core.oss.OssTemplate;
 import org.springblade.mdm.basesetting.machine.service.MachineService;
 import org.springblade.mdm.basesetting.machine.entity.Machine;
-import org.springblade.mdm.flow.constants.FlowContants;
+import org.springblade.mdm.flow.constants.FlowConstant;
 import org.springblade.mdm.flow.entity.FlowProgramFile;
 import org.springblade.mdm.flow.service.FlowProgramFileService;
 import org.springblade.mdm.program.entity.NcNode;
@@ -72,7 +72,7 @@
 				if(pkgNode.isDeviationProgram()){
 					//鍋忕鍗曠殑绋嬪簭锛屽鏋滃鎵瑰鍑鸿褰曟槸瑙i攣褰㈡垚鐨勶紝杩樻槸闇�瑕侀攣瀹氾紱鏅�氳瘯鍒囪繃鐨勶紝涓嶉攣瀹�
 					HistoricProcessInstance hisInst = historyService.createHistoricProcessInstanceQuery().processInstanceId(approved.getProcessInstanceId()).singleResult();
-					if(hisInst != null && hisInst.getProcessDefinitionKey().equals(FlowContants.UNLOCK_PROCESS_KEY)){
+					if(hisInst != null && hisInst.getProcessDefinitionKey().equals(FlowConstant.UNLOCK_PROCESS_KEY)){
 						pkgNode.lock("涓嬪彂瀵煎嚭閿佸畾");
 						ncNodeService.updateById(pkgNode);
 					}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/ApproveTableService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/ApproveTableService.java
index 108309e..4070519 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/ApproveTableService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/ApproveTableService.java
@@ -5,28 +5,23 @@
 import org.apache.commons.lang3.StringUtils;
 import org.springblade.core.oss.OssTemplate;
 import org.springblade.core.tool.utils.DateUtil;
-import org.springblade.core.tool.utils.Func;
 import org.springblade.mdm.basesetting.machine.entity.Machine;
 import org.springblade.mdm.basesetting.machine.service.MachineService;
 import org.springblade.mdm.commons.service.ParamService;
 import org.springblade.mdm.commons.service.UserCommonService;
-import org.springblade.mdm.flow.constants.FlowContants;
+import org.springblade.mdm.flow.constants.FlowConstant;
 import org.springblade.mdm.flow.entity.TaskDispatch;
 import org.springblade.mdm.flow.service.ApproveInfoQueryService;
 import org.springblade.mdm.flow.service.FlowProgramProperties;
-import org.springblade.mdm.flow.service.TaskDispatchService;
 import org.springblade.mdm.flow.vo.ApproveTableInfo;
-import org.springblade.mdm.program.service.NcNodeService;
 import org.springblade.mdm.statreport.utils.WordReplaceUtil;
 import org.springblade.system.feign.IUserClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.OutputStream;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
@@ -94,7 +89,7 @@
 		dataMap.put("startTime",dispatchDateStr);//宸ユ璐熻矗浜�/鍗曞厓璐熻矗浜烘淳鍑烘椂闂�
 		dataMap.put("fuzeren",approveInfo.getProgrammerName());//璐熻矗浜�
 
-		if(StringUtils.equals(props.getHasCuredProgram(),FlowContants.Y)){
+		if(StringUtils.equals(props.getHasCuredProgram(), FlowConstant.Y)){
 			//鏍″浠诲姟
 			dataMap.put("jd", WordReplaceUtil.CHECKED);
 			dataMap.put("bz", WordReplaceUtil.UNCHECKED);
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/ConfirmTablePrintService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/ConfirmTablePrintService.java
index 276c51f..d433ea4 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/ConfirmTablePrintService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/ConfirmTablePrintService.java
@@ -5,7 +5,6 @@
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang3.StringUtils;
 import org.flowable.engine.HistoryService;
-import org.flowable.engine.RuntimeService;
 import org.flowable.engine.history.HistoricProcessInstance;
 import org.flowable.engine.history.HistoricProcessInstanceQuery;
 import org.springblade.core.oss.OssTemplate;
@@ -18,8 +17,8 @@
 import org.springblade.mdm.basesetting.producedivision.service.QinzheFgbService;
 import org.springblade.mdm.commons.contants.DictBizConstants;
 import org.springblade.mdm.commons.service.ParamService;
-import org.springblade.mdm.flow.constants.FlowContants;
-import org.springblade.mdm.flow.constants.FlowVariableContants;
+import org.springblade.mdm.flow.constants.FlowConstant;
+import org.springblade.mdm.flow.constants.FlowVariableConstant;
 import org.springblade.mdm.flow.entity.FlowProgramFile;
 import org.springblade.mdm.flow.entity.TaskDispatch;
 import org.springblade.mdm.flow.service.ApproveInfoQueryService;
@@ -28,7 +27,6 @@
 import org.springblade.mdm.flow.service.TaskDispatchService;
 import org.springblade.mdm.flow.vo.ApproveTableInfo;
 import org.springblade.mdm.flow.vo.FlowVO;
-import org.springblade.mdm.program.entity.NcNode;
 import org.springblade.mdm.program.entity.NcNodeHis;
 import org.springblade.mdm.program.service.NcNodeHisService;
 import org.springblade.mdm.program.service.NcNodeService;
@@ -170,9 +168,9 @@
 	 */
 	public IPage<FlowVO> confirmTablePage(IPage<FlowVO> page, String drawingNo, String keyword,LocalDateTime createTimeBegin, LocalDateTime createTimeEnd) {
 		//鍥哄寲閲岃矾鏉戝畼
-		HistoricProcessInstanceQuery query = this.historyService.createHistoricProcessInstanceQuery().finished().processDefinitionKey(FlowContants.CURE_PROCESS_KEY).includeProcessVariables();
+		HistoricProcessInstanceQuery query = this.historyService.createHistoricProcessInstanceQuery().finished().processDefinitionKey(FlowConstant.CURE_PROCESS_KEY).includeProcessVariables();
 			//.finished() // 鍙煡璇㈠凡瀹屾垚鐨勬祦绋�.unfinished() // 鏌ヨ鏈畬鎴愮殑娴佺▼
-		query.variableNotExists(FlowVariableContants.EXCEPTION);//闈炲紓甯告祦绋�
+		query.variableNotExists(FlowVariableConstant.EXCEPTION);//闈炲紓甯告祦绋�
 		if(createTimeBegin!=null) {
 			query.startedAfter(DateUtil.toDate(createTimeBegin));
 		}
@@ -181,7 +179,7 @@
 		}
 		if(Func.isNotEmpty(drawingNo)) {
 			String likeVal = "%" + drawingNo + "%";
-			query.variableValueLike(FlowVariableContants.DRAWING_NO,likeVal);
+			query.variableValueLike(FlowVariableConstant.DRAWING_NO,likeVal);
 		}
 
 
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/CuredProgramStatService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/CuredProgramStatService.java
index 370d305..4575fe5 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/CuredProgramStatService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/CuredProgramStatService.java
@@ -13,8 +13,8 @@
 import org.springblade.mdm.basesetting.producedivision.entity.MdmDept;
 import org.springblade.mdm.basesetting.producedivision.service.MdmDeptService;
 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.constants.FlowConstant;
+import org.springblade.mdm.flow.constants.FlowVariableConstant;
 import org.springblade.mdm.flow.service.FlowCommonService;
 import org.springblade.mdm.flow.service.FlowProgramProperties;
 import org.springblade.mdm.statreport.vo.CuredProgramQueryVO;
@@ -45,9 +45,9 @@
 
 	public IPage<CuredProgramVO> pageQuery(CuredProgramQueryVO queryVO) {
 		//鍥哄寲閲岃矾鏉戝畼
-		HistoricProcessInstanceQuery query = this.historyService.createHistoricProcessInstanceQuery().finished().processDefinitionKey(FlowContants.CURE_PROCESS_KEY).includeProcessVariables();
+		HistoricProcessInstanceQuery query = this.historyService.createHistoricProcessInstanceQuery().finished().processDefinitionKey(FlowConstant.CURE_PROCESS_KEY).includeProcessVariables();
 			//.finished() // 鍙煡璇㈠凡瀹屾垚鐨勬祦绋�.unfinished() // 鏌ヨ鏈畬鎴愮殑娴佺▼
-		query.variableNotExists(FlowVariableContants.EXCEPTION);//闈炲紓甯告祦绋�
+		query.variableNotExists(FlowVariableConstant.EXCEPTION);//闈炲紓甯告祦绋�
 		if(queryVO.getEndMonth()!=null){
 			queryVO.setEndTimeBegin(queryVO.getEndMonth().withDayOfMonth(1));
 			queryVO.setEndTimeEnd(queryVO.getEndMonth().with(TemporalAdjusters.lastDayOfMonth()));
@@ -82,13 +82,13 @@
 			if(!machines.isEmpty()) {
                 query.or();
 				for(Machine machine : machines){
-					query.variableValueEquals(FlowVariableContants.MACHINE_CODE, machine.getCode());
+					query.variableValueEquals(FlowVariableConstant.MACHINE_CODE, machine.getCode());
 				}
 
 				query.endOr();
 			}else{
 				//娌℃壘鍒版満搴婏紝灏卞簲璇ユ煡涓嶅埌鏁版嵁
-				query.variableNotExists(FlowVariableContants.MACHINE_CODE);
+				query.variableNotExists(FlowVariableConstant.MACHINE_CODE);
 			}
 		}
 		query.orderByProcessInstanceEndTime().desc(); // 鎸夌粨鏉熸椂闂撮檷搴忔帓鍒�
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/NewProgrammingStatService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/NewProgrammingStatService.java
index 683efd0..d723157 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/NewProgrammingStatService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/NewProgrammingStatService.java
@@ -5,41 +5,23 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.AllArgsConstructor;
 import org.flowable.engine.HistoryService;
-import org.flowable.engine.RuntimeService;
 import org.flowable.engine.history.HistoricProcessInstance;
 import org.flowable.engine.history.HistoricProcessInstanceQuery;
-import org.springblade.core.oss.OssTemplate;
-import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.DateUtil;
-import org.springblade.core.tool.utils.Func;
 import org.springblade.mdm.basesetting.machine.entity.Machine;
 import org.springblade.mdm.basesetting.machine.service.MachineService;
 import org.springblade.mdm.basesetting.producedivision.entity.MdmDept;
 import org.springblade.mdm.basesetting.producedivision.service.MdmDeptService;
-import org.springblade.mdm.commons.contants.DictBizConstants;
-import org.springblade.mdm.commons.service.ParamService;
 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.entity.FlowProgramFile;
-import org.springblade.mdm.flow.entity.TaskDispatch;
+import org.springblade.mdm.flow.constants.FlowConstant;
+import org.springblade.mdm.flow.constants.FlowVariableConstant;
 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.flow.vo.FlowVO;
-import org.springblade.mdm.statreport.utils.WordReplaceUtil;
 import org.springblade.mdm.statreport.vo.NewProgrammingQueryVO;
 import org.springblade.mdm.statreport.vo.NewProgrammingVO;
-import org.springblade.system.feign.IDictBizClient;
-import org.springblade.system.feign.IUserClient;
 import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.time.LocalDateTime;
 import java.time.temporal.TemporalAdjusters;
 import java.util.*;
 
@@ -60,10 +42,10 @@
 
 	public IPage<NewProgrammingVO> pageQuery(NewProgrammingQueryVO queryVO) {
 		//鍥哄寲閲岃矾鏉戝畼
-		HistoricProcessInstanceQuery query = this.historyService.createHistoricProcessInstanceQuery().finished().processDefinitionKey(FlowContants.TRY_PROCESS_KEY).includeProcessVariables();
+		HistoricProcessInstanceQuery query = this.historyService.createHistoricProcessInstanceQuery().finished().processDefinitionKey(FlowConstant.TRY_PROCESS_KEY).includeProcessVariables();
 			//.finished() // 鍙煡璇㈠凡瀹屾垚鐨勬祦绋�.unfinished() // 鏌ヨ鏈畬鎴愮殑娴佺▼
-		query.variableNotExists(FlowVariableContants.EXCEPTION);//闈炲紓甯告祦绋�
-		query.variableValueEquals(FlowVariableContants.HAS_CURED_PROGRAM,FlowContants.N);//鏃犲浐鍖栫▼搴�
+		query.variableNotExists(FlowVariableConstant.EXCEPTION);//闈炲紓甯告祦绋�
+		query.variableValueEquals(FlowVariableConstant.HAS_CURED_PROGRAM, FlowConstant.N);//鏃犲浐鍖栫▼搴�
 		if(queryVO.getEndMonth()!=null){
 			queryVO.setEndTimeBegin(queryVO.getEndMonth().withDayOfMonth(1));
 			queryVO.setEndTimeEnd(queryVO.getEndMonth().with(TemporalAdjusters.lastDayOfMonth()));
@@ -98,13 +80,13 @@
 			if(!machines.isEmpty()) {
 				query.or();
 				for(Machine machine : machines){
-					query.variableValueEquals(FlowVariableContants.MACHINE_CODE, machine.getCode());
+					query.variableValueEquals(FlowVariableConstant.MACHINE_CODE, machine.getCode());
 				}
 
 				query.endOr();
 			}else{
 				//娌℃壘鍒版満搴婏紝灏卞簲璇ユ煡涓嶅埌鏁版嵁
-				query.variableNotExists(FlowVariableContants.MACHINE_CODE);
+				query.variableNotExists(FlowVariableConstant.MACHINE_CODE);
 			}
 		}
 		query.orderByProcessInstanceEndTime().desc(); // 鎸夌粨鏉熸椂闂撮檷搴忔帓鍒�
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/TaskDispatchStatService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/TaskDispatchStatService.java
index 52d81df..a63d4a4 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/TaskDispatchStatService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/TaskDispatchStatService.java
@@ -2,46 +2,22 @@
 package org.springblade.mdm.statreport.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.poi.ss.usermodel.DateUtil;
 import org.flowable.engine.HistoryService;
 import org.flowable.engine.RuntimeService;
 import org.flowable.engine.history.HistoricProcessInstance;
 import org.flowable.engine.runtime.ProcessInstance;
-import org.flowable.variable.api.event.FlowableVariableEvent;
-import org.jetbrains.annotations.NotNull;
 import org.springblade.core.mp.support.Condition;
-import org.springblade.core.oss.OssTemplate;
-import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
-import org.springblade.mdm.basesetting.machine.entity.Machine;
 import org.springblade.mdm.basesetting.machine.service.MachineService;
 import org.springblade.mdm.commons.service.ParamService;
 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.entity.TaskDispatch;
-import org.springblade.mdm.flow.service.ApproveInfoQueryService;
-import org.springblade.mdm.flow.service.FlowProgramProperties;
-import org.springblade.mdm.flow.service.TaskDispatchService;
-import org.springblade.mdm.flow.vo.ApproveTableInfo;
-import org.springblade.mdm.flow.vo.DispathTaskQueryVO;
+import org.springblade.mdm.flow.constants.FlowVariableConstant;
 import org.springblade.mdm.statreport.mapper.TaskDispatchStatMapper;
-import org.springblade.mdm.statreport.utils.WordReplaceUtil;
 import org.springblade.mdm.statreport.vo.TaskDispatchStatVO;
 import org.springblade.mdm.statreport.vo.TaskDispathStatQueryVO;
-import org.springblade.system.feign.IUserClient;
-import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.time.LocalDateTime;
-import java.util.*;
 
 /**
  * 瀹℃壒璁板綍锛岀敤浜庢煡璇㈡墽琛岃建杩�
@@ -74,7 +50,7 @@
 		{
 			HistoricProcessInstance hisInst = historyService.createHistoricProcessInstanceQuery().processInstanceId(vo.getProcessInstanceId()).singleResult();
 			if(hisInst != null){
-				vo.setProgrammerName(userCommonService.getUserNameById(Func.toLong(hisInst.getProcessVariables().get(FlowVariableContants.PROGRAMMER))));
+				vo.setProgrammerName(userCommonService.getUserNameById(Func.toLong(hisInst.getProcessVariables().get(FlowVariableConstant.PROGRAMMER))));
 			}
 
 
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/vo/NewProgrammingVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/vo/NewProgrammingVO.java
index d3a2b5f..e6d633c 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/vo/NewProgrammingVO.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/vo/NewProgrammingVO.java
@@ -2,10 +2,7 @@
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
-import org.apache.commons.lang3.StringUtils;
-import org.springblade.mdm.flow.constants.FlowContants;
 
-import java.time.LocalDate;
 import java.util.Date;
 
 @Data
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/task/MesSyncTask.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/task/MesSyncTask.java
new file mode 100644
index 0000000..0109473
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/task/MesSyncTask.java
@@ -0,0 +1,48 @@
+package org.springblade.mdm.task;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springblade.mdm.basesetting.machine.entity.Machine;
+import org.springblade.mdm.basesetting.machine.service.MachineService;
+import org.springblade.mdm.commons.contants.ParamConstants;
+import org.springblade.mdm.commons.service.ParamService;
+import org.springblade.mdm.flow.service.MesSyncService;
+import org.springblade.mdm.machinefile.entity.MachineFile;
+import org.springblade.mdm.machinefile.service.MachineFileService;
+import org.springblade.mdm.machinefile.service.ReceiveFileCheckService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * MES鍚屾鏁版嵁锛岃礋璐e皢鍥哄寲鐨勪换鍔℃暟鎹洖浼爉es锛屼富瑕佹槸澶辫触鐨勩��
+ */
+@Slf4j
+@Component
+@EnableScheduling
+public class MesSyncTask {
+	@Autowired
+	private MesSyncService mesSyncService;
+	@Autowired
+	private ParamService paramService;
+	/**
+	 * 鏂囦欢榛樿淇濆瓨灏忔椂鏁帮紝0涓嶉檺鍒�
+	 */
+	private static final int DEFAULT_HOUR = 0;
+	// 姣�5绉掓墽琛屼竴娆�
+	//@Scheduled(cron = "0 15 19 * * ?") //test
+	@Scheduled(cron = "${task.cron.mes_sync:0 */10 * * * ?}")
+	public void execute() {
+
+		String networkType = paramService.networkType();
+
+		if(ParamConstants.NETWORK_TYPE_SHEMI.equals(networkType)){
+			//娑夊瘑缃戯紝鎵嶅悓姝es
+			mesSyncService.syncToMes();
+		}
+
+	}
+
+}
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 dbb5551..4fc127a 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
@@ -10,8 +10,11 @@
 import org.apache.neethi.AssertionBuilderFactory;
 import org.apache.ws.commons.schema.XmlSchemaSerializer;
 import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.SpringUtil;
 import org.springblade.mdm.basesetting.machine.entity.Machine;
 import org.springblade.mdm.commons.service.InternalEmailService;
+import org.springblade.mdm.flow.excution.events.CureFinishedEvent;
+import org.springblade.mdm.flow.service.MesSyncService;
 import org.springblade.mdm.flow.service.WIthdrawService;
 import org.springblade.mdm.machinefile.entity.MachineFile;
 import org.springblade.mdm.machinefile.service.MachineFileScanService;
@@ -44,9 +47,8 @@
 
 	@Autowired
 	private NcNodeService service;
-
 	@Autowired
-	private MachineFileScanTask machineFileScanTask;
+	private MesSyncService mesSyncService;
 	@Autowired
 	private ProgramAnnotationService programAnnotationService;
 	@Autowired
@@ -138,4 +140,15 @@
 		//format:?time=2025-09-16%2010:11:10
 		nodeHisService.mergeNodeToHisGeTime(time);
 	}
+	@GetMapping("/mes-sync")
+	public void mesSync(){
+		mesSyncService.syncToMes();
+	}
+
+	@GetMapping("/publish-cure")
+	public void publishCure(){
+		CureFinishedEvent e = new CureFinishedEvent(this,"0000000173");
+		SpringUtil.publishEvent(e);
+	}
+
 }
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 d721785..38edc92 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
@@ -8,7 +8,7 @@
 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.constants.FlowConstant;
 import org.springblade.mdm.flow.entity.TaskDispatch;
 import org.springblade.mdm.flow.excution.StartDispatcher;
 import org.springblade.mdm.flow.service.TaskDispatchService;
@@ -145,7 +145,7 @@
 		}
 
 		taskAssignVO.setTitle(taskAssignVO.getDrawingNo()+"-"+taskAssignVO.getProcessNo()+"-"+taskAssignVO.getProcessEdition()+"璁″垝浠诲姟");
-		taskAssignVO.setIsTempFlow(FlowContants.N);
+		taskAssignVO.setIsTempFlow(FlowConstant.N);
 		return taskAssignVO;
 	}
 
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/thirdpart/service/MesTaskService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/thirdpart/service/MesTaskService.java
index c7db2e2..dd224fa 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/thirdpart/service/MesTaskService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/thirdpart/service/MesTaskService.java
@@ -4,7 +4,7 @@
 import lombok.extern.slf4j.Slf4j;
 import org.flowable.engine.RuntimeService;
 import org.flowable.engine.runtime.ProcessInstance;
-import org.springblade.mdm.flow.constants.FlowVariableContants;
+import org.springblade.mdm.flow.constants.FlowVariableConstant;
 import org.springblade.mdm.flow.entity.TaskDispatch;
 import org.springblade.mdm.flow.service.TaskDispatchService;
 import org.springblade.mdm.flow.vo.TaskAssignVO;
@@ -62,7 +62,7 @@
 			ProcessInstance inst = runtimeService.createProcessInstanceQuery()
 				.processInstanceId(taskDispatch.getProcessInstanceId()).active().singleResult();
 			if(inst != null){
-				runtimeService.setVariable(taskDispatch.getProcessInstanceId(), FlowVariableContants.PROCESS_CARD,finishTaskVO.getProcessCard());
+				runtimeService.setVariable(taskDispatch.getProcessInstanceId(), FlowVariableConstant.PROCESS_CARD,finishTaskVO.getProcessCard());
 			}
 
 		}
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 da85363..2e2f7c7 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
@@ -4,7 +4,7 @@
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.tool.api.IResultCode;
 import org.springblade.core.tool.utils.Func;
-import org.springblade.mdm.flow.constants.FlowContants;
+import org.springblade.mdm.flow.constants.FlowConstant;
 import org.springblade.mdm.flow.service.FlowProgramProperties;
 import org.springblade.mdm.program.service.NcNodeService;
 
@@ -15,7 +15,7 @@
 	 * @param programProperties 绋嬪簭灞炴�э紝鍙戣捣鏃跺~鍐欑殑
 	 */
 	public static void checkFilename(String filename, FlowProgramProperties programProperties){
-		if(FlowContants.Y.equals(programProperties.getIsTempFlow())){
+		if(FlowConstant.Y.equals(programProperties.getIsTempFlow())){
 			//涓存椂绋嬪簭涓嬪彂娴佺▼锛屼笉妫�鏌ユ枃浠跺悕鍚堟硶鎬�
 			return;
 		}

--
Gitblit v1.9.3