From 3baca21e0e6563f8379359ef2ba78c224eb4bc80 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期二, 23 九月 2025 22:45:51 +0800
Subject: [PATCH] 修复审批表,确认表内容

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/entity/FileSendRecord.java                 |    5 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/contants/RegExpConstants.java                  |    4 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/vo/MachineBackTaskQueryVO.java                |   25 ++
 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                      |    4 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/service/MachineBackTaskService.java           |   32 +++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeAutoCreateService.java           |  112 +++++-------
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/NormalFinishDataHandler.java    |   17 +
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/mapper/MachineBackTaskMapper.java             |   22 ++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowCommonService.java                    |    3 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/controller/MachineBackTaskController.java     |   54 ++++++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/ReceiveFileCheckService.java       |   26 ++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExportDNCService.java         |    1 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/DeviationCureFinishDataHandler.java |    8 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/ApproveTableService.java            |    2 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/controller/FileSendRecordController.java   |    1 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/MyTestController.java                             |   25 ++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/replace/ReplaceFinishListener.java       |    2 
 blade-service/blade-mdm/src/test/java/org/springblade/mdm/utils/FileContentUtilTest.java                         |    4 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/task/MesSyncTask.java                                  |    4 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/NormalCureFinishDataHandler.java    |    5 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeHisService.java                  |   16 +
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/mapper/MachineBackTaskMapper.xml              |   35 +++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java                     |   18 -
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/vo/MachineBackTaskVO.java                     |   20 ++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/MdmProgramImportService.java           |    3 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/entity/MachineBackTask.java                   |   45 +++++
 27 files changed, 381 insertions(+), 124 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/contants/RegExpConstants.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/contants/RegExpConstants.java
index c13dd89..f8e3003 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/contants/RegExpConstants.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/contants/RegExpConstants.java
@@ -7,8 +7,8 @@
 	/**
 	 * 绋嬪簭鏂囦欢鍚� 姝e垯
 	 */
-	public static final Pattern PROGRAM_FILE_PATTERN = Pattern.compile("^([\\w\\-]+)-([0-9a-zA-Z]+)-([\\u4e00-\\u9fa5a-zA-Z0-9]+)-(\\d+)-(\\d+)-?([Pp]\\d+)?(\\.[a-zA-Z]+)?$");
+	public static final Pattern PROGRAM_FILE_PATTERN = Pattern.compile("^([\\u4e00-\\u9fa5\\w\\-]+)-([0-9a-zA-Z]+)-([\\u4e00-\\u9fa5a-zA-Z0-9]+)-(\\d+)-(\\d+)-?([Pp]\\d+)?(\\.[a-zA-Z]+)?$");
 
 	//public static final Pattern PROGRAM_PACKAGE_PATTERN = Pattern.compile("[\\w\\-]+\\-\\w+\\-\\w+");
-	public static final Pattern PROGRAM_PACKAGE_PATTERN = Pattern.compile("([\\w\\-]+)-[0-9a-zA-Z]+-[0-9a-zA-Z]+");
+	public static final Pattern PROGRAM_PACKAGE_PATTERN = Pattern.compile("([\\u4e00-\\u9fa5\\w\\-]+)-[0-9a-zA-Z]+-[\\u4e00-\\u9fa5a-zA-Z0-9]+");
 }
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/DeviationCureFinishDataHandler.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/DeviationCureFinishDataHandler.java
index 6b5c328..67b4e2e 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/DeviationCureFinishDataHandler.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/DeviationCureFinishDataHandler.java
@@ -19,7 +19,7 @@
 import java.util.List;
 
 /**
- * 鍋忕鍗曞浐鍖栧畬鎴愭暟鎹鐞嗗櫒锛屽姛鑳斤細姊崇悊鏍戣妭鐐�
+ * 涓存椂鏇存敼鍗曞浐鍖栧畬鎴愭暟鎹鐞嗗櫒锛屽姛鑳斤細姊崇悊鏍戣妭鐐�
  */
 @Slf4j
 @Component("deviationCureFinishDataHandler")
@@ -31,13 +31,13 @@
 	private NcNodeService nodeService;
 
 	/**
-	 * cureFinishOperateTask璋冪敤锛屽亸绂诲崟鍥炰紶瀹℃壒瀹屾垚澶勭悊涓氬姟
+	 * cureFinishOperateTask璋冪敤锛屼复鏃舵洿鏀瑰崟鍥炰紶瀹℃壒瀹屾垚澶勭悊涓氬姟
 	 * @param props 灞炴��
 	 */
 	public void handleData(FlowProgramProperties props) {
 		// 鎵ц涓氬姟閫昏緫
 		NcNode pkgNode = nodeService.lambdaQuery().eq(NcNode::getProcessInstanceId,  props.getProcessInstanceId()).one();
-		pkgNode.lock("鍋忕鍗曞洖浼犻攣瀹�");
+		pkgNode.lock("涓存椂鏇存敼鍗曞洖浼犻攣瀹�");
 		pkgNode.setIsLastEdition(0);
 		nodeService.updateById(pkgNode);
 
@@ -53,7 +53,7 @@
 
 		addNewProgramNode(newPkgNode,props.getProcessInstanceId());
 
-		log.info("鍋忕鍥炰紶Listener瀹屾垚");
+		log.info("涓存椂鏇存敼鍗曞洖浼燣istener瀹屾垚");
 	}
 
 	/**
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/NormalCureFinishDataHandler.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/NormalCureFinishDataHandler.java
index f949f78..ec8432e 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/NormalCureFinishDataHandler.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/NormalCureFinishDataHandler.java
@@ -240,8 +240,6 @@
 			cureNode.upgradeVersionNumber();
 		}
 
-		//nodeService.save(cureNode);
-
 		return cureNode;
 	}
 	/**
@@ -256,13 +254,12 @@
 			byte[] bytes = IOUtils.toByteArray(ins);
 			ByteArrayInputStream byteInputStream =  new ByteArrayInputStream(bytes);
 
-			//InputStream finishedStream = programAnnotationService.setGHAnnotation(byteInputStream,controlSystem,annoDicts);
 			List<DictBiz> annoDictList = programAnnotationService.getAnnotionDictList();
 			AnnotationProperties annoProps = config.getConfigMap().get(controlSystem);
 			if(annoProps == null){
 				annoProps = AnnotationProperties.getDefault();
 			}
-			InputStream finishedStream =AnnotationUtil.setAnnotationAndGetInputStream(byteInputStream, "GH", annoProps.getStatusLineIndex(), controlSystem, annoDictList);
+			InputStream finishedStream =AnnotationUtil.setAnnotationAndGetInputStream(byteInputStream, AnnotationUtil.GH, annoProps.getStatusLineIndex(), controlSystem, annoDictList);
 			try(finishedStream) {
 				finishedStream.reset();
 				BladeFile bfile = ossTemplate.putFile(flowProgramFile.getName(), finishedStream);
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 f6fe576..6cd2f89 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
@@ -16,6 +16,7 @@
 import org.springblade.mdm.gkw.programnode.vo.ProgramNameVO;
 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.mdm.program.service.programannotation.*;
 import org.springblade.mdm.utils.ProgramFileNameParser;
@@ -48,6 +49,8 @@
 	private ListenerHelper listenerHelper;
 	@Autowired
 	private OssTemplate ossTemplate;
+	@Autowired
+	private NcNodeHisService ncNodeHisService;
 
 	/**
 	 * DispatchFinishListener涓皟鐢�
@@ -66,20 +69,23 @@
 				ncNodeService.updateById(packageNode);
 
 				//鐗堟湰鍙锋牴鎹浂缁勪欢鍙�+宸ュ簭鍙凤紝宸ュ簭鐗堟锛屾満搴婄粍 鐩存帴鏌ヨ鏁伴噺锛�+1鑾峰彇
-				Integer newVersion = ncNodeService.calculateVersionNumber(packageNode);
-				packageNode = ncNodeAutoCreateService.createNodeTreeWithProgram(props,newVersion);
+				Integer newVersion = ncNodeHisService.calculateVersionNumber(packageNode);
+				packageNode = ncNodeAutoCreateService.createNodeTreeWithProgram(props);
+				packageNode.setVersionNumber(newVersion);
+				ncNodeService.updateById(packageNode);
 			}else{
 				//鍙敤锛岀┖鍗囩増锛堜慨鏀瑰叾宸ュ簭鐗堟锛夛紝鍘熸潵鐨勮妭鐐规竻闄�
 				moveToNewProcessEdition(packageNode,props);
-
 				//鏇存柊宸插浐鍖栫殑锛屽悓鍚嶃�佷笉鍚屾満搴婄粍鐨勭▼搴忎负閿佸畾鐘舵��
 				ncNodeService.lockSameNameOtherMachineGroupProgramPackage(packageNode);
 			}
 		}else{
-			//鏅�氳瘯鍒�
-			packageNode = ncNodeAutoCreateService.createNodeTreeWithProgram(props,1);
+			//鏅�氳瘯鍒�/涓存椂鏇存敼鍗�
+			packageNode = ncNodeAutoCreateService.createNodeTreeWithProgram(props);
+			Integer newVersion = ncNodeHisService.calculateVersionNumber(packageNode);
 			long hisSerial = ncNodeService.calculateHistorySerial(packageNode);
 			packageNode.setHisSerial(hisSerial);
+			packageNode.setVersionNumber(newVersion);
 			ncNodeService.updateById(packageNode);
 		}
 
@@ -111,7 +117,6 @@
 		this.ncNodeService.updateById(packageNode);
 		Machine machine = machineService.getByCode(packageNode.getMachineCode());
 		//绉诲姩绋嬪簭鑺傜偣
-		//List<DictBiz> annoDicts = programAnnotationService.getAnnotionDictList();
 		List<NcNode> programNodes = ncNodeService.getProgramFilesByPackageId(packageNode.getId());
 		for(NcNode programNode : programNodes){
 			FlowProgramFile progFile = this.flowProgramFileService.getById(programNode.getFlowProgramFileId());
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 d4e2b9a..c353c67 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
@@ -95,7 +95,7 @@
 		newPackageNode.setIsLocked(0);
 		newPackageNode.setIsLastEdition(1);
 
-		Integer newVersion = ncNodeService.calculateVersionNumber(oldPackageNode);
+		Integer newVersion = nodeHisService.calculateVersionNumber(oldPackageNode);
 		newPackageNode.setVersionNumber(newVersion);
 		newPackageNode.setProcessInstanceId(processInstanceId);
 		ncNodeService.save(newPackageNode);
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 164e158..72d5b7e 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
@@ -92,8 +92,8 @@
 
 
 		if(programPackage.getDeviation() != null) {
-			vars.put(FlowVariableConstant.MY_PROCESS_NAME, "鍋忕鍥炰紶");
-			vars.put(FlowVariableConstant.TITLE,programPackage.getName()+"-鍋忕鍥炰紶");//鑷姩澧炲姞鏍囬
+			vars.put(FlowVariableConstant.MY_PROCESS_NAME, "涓存椂鏇存敼鍗曞洖浼�");
+			vars.put(FlowVariableConstant.TITLE,programPackage.getName()+"-涓存椂鏇存敼鍗曞洖浼�");//鑷姩澧炲姞鏍囬
 		}else {
 			vars.put(FlowVariableConstant.MY_PROCESS_NAME, "鍥哄寲娴佺▼");
 			vars.put(FlowVariableConstant.TITLE,programPackage.getName()+"-"+programPackage.getProcessEdition()+"-鍥哄寲");//鑷姩澧炲姞鏍囬
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 0fadac3..7133f50 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
@@ -219,6 +219,9 @@
 		vars.put(FlowConstant.NODE_ID, programPackageNode.getId());
 		vars.put(FlowVariableConstant.WORKSHOP,nodeDeptQueryService.getWorkshopNameByMachineCode(programPackageNode.getMachineCode()));
 
+		if(programPackageNode.isDeviationProgram()) {
+			vars.put(FlowVariableConstant.DEVIATION, programPackageNode.getDeviation());
+		}
 	}
 }
 
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/controller/MachineBackTaskController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/controller/MachineBackTaskController.java
new file mode 100644
index 0000000..a744d86
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/controller/MachineBackTaskController.java
@@ -0,0 +1,54 @@
+
+package org.springblade.mdm.gkw.task.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.extern.slf4j.Slf4j;
+import org.springblade.core.excel.util.ExcelUtil;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.DateUtil;
+import org.springblade.mdm.commons.service.OssFileCommonService;
+import org.springblade.mdm.gkw.task.service.MachineBackTaskService;
+import org.springblade.mdm.gkw.task.vo.MachineBackTaskQueryVO;
+import org.springblade.mdm.gkw.task.vo.MachineBackTaskVO;
+import org.springblade.mdm.machinefile.entity.FileSendRecord;
+import org.springblade.mdm.machinefile.service.FileSendRecordService;
+import org.springblade.mdm.machinefile.vo.FileSendRecordExcelVO;
+import org.springblade.mdm.machinefile.vo.FileSendRecordQueryVO;
+import org.springblade.mdm.machinefile.vo.FileSendRecordVO;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 鏈哄簥鍥炰紶浠诲姟
+ *
+ * @author yangys
+ */
+@NonDS
+@RestController
+@RequestMapping("/gkw/machinebacktask")
+@Tag(name = "鏈哄簥鍥炰紶浠诲姟", description = "鏈哄簥鍥炰紶浠诲姟")
+@Slf4j
+public class MachineBackTaskController {
+	@Autowired
+	private MachineBackTaskService machineBackTaskService;
+
+	@GetMapping("/page")
+	@Operation(summary = "鏈哄簥鍥炰紶浠诲姟鍒楄〃", description = "鏈哄簥鍥炰紶浠诲姟鍒楄〃")
+	public R<IPage<MachineBackTaskVO>> page(MachineBackTaskQueryVO query) {
+		if(query.getCreateTimeEnd()!=null){
+			query.setCreateTimeEnd(query.getCreateTimeEnd().plusDays(1));
+		}
+		return R.data(machineBackTaskService.pageQuery(query));
+	}
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/entity/MachineBackTask.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/entity/MachineBackTask.java
new file mode 100644
index 0000000..3372414
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/entity/MachineBackTask.java
@@ -0,0 +1,45 @@
+package org.springblade.mdm.gkw.task.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+import org.apache.commons.io.FileUtils;
+import org.springblade.core.mp.base.BizEntity;
+
+import java.util.Date;
+
+/**
+ * 鏈哄簥鍥炰紶浠诲姟
+ */
+@Setter
+@Getter
+@TableName("mdm_machine_back_task")
+public class MachineBackTask extends BizEntity {
+	/**
+	 * 浠诲姟绫诲瀷锛氬伐鑹虹紪鍒朵换鍔�
+	 */
+	private static final long TASK_TYPE_PROGRAM = 1;
+	/**
+	 * 浠诲姟绫诲瀷锛氱幇鍦虹紪鍒朵换鍔�
+	 */
+	private static final long TASK_TYPE_ON_MACHINE = 2;
+	/**
+	 * 鏂囦欢鍚�
+	 */
+	private String programName;
+	/**
+	 * 鎵�灞炴満搴�
+	 */
+	private String machineCode;
+
+	/**
+	 * 涓存椂鏇存敼鍗�
+	 */
+	private String deviation;
+	/**
+	 * 浠诲姟绫诲瀷
+	 */
+	private String taskType;
+
+	private Date finishTime;
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/mapper/MachineBackTaskMapper.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/mapper/MachineBackTaskMapper.java
new file mode 100644
index 0000000..5a962ed
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/mapper/MachineBackTaskMapper.java
@@ -0,0 +1,22 @@
+package org.springblade.mdm.gkw.task.mapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+import org.springblade.core.mp.mapper.BladeMapper;
+import org.springblade.mdm.gkw.task.entity.MachineBackTask;
+import org.springblade.mdm.gkw.task.vo.MachineBackTaskQueryVO;
+import org.springblade.mdm.gkw.task.vo.MachineBackTaskVO;
+import org.springblade.mdm.machinefile.entity.FileSendRecord;
+import org.springblade.mdm.machinefile.vo.FileSendRecordQueryVO;
+import org.springblade.mdm.machinefile.vo.FileSendRecordVO;
+
+public interface MachineBackTaskMapper extends BladeMapper<MachineBackTask> {
+	/**
+	 * 鏂囦欢涓嬪彂璁板綍鍒嗛〉鏌ヨ
+	 * @param page 鍒嗛〉淇℃伅
+	 * @param query 鏌ヨ鍙傛暟
+	 * @return 鍒嗛〉鏁版嵁
+	 */
+	IPage<MachineBackTaskVO> pageQuery(IPage<MachineBackTaskVO> page, @Param("query") MachineBackTaskQueryVO query);
+
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/mapper/MachineBackTaskMapper.xml b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/mapper/MachineBackTaskMapper.xml
new file mode 100644
index 0000000..be0fd66
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/mapper/MachineBackTaskMapper.xml
@@ -0,0 +1,35 @@
+<?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.gkw.task.mapper.MachineBackTaskMapper">
+
+
+    <!--鏂囦欢璁板綍鏌ヨ-->
+
+    <select id="pageQuery" resultType="org.springblade.mdm.gkw.task.vo.MachineBackTaskVO">
+        select t.id,t.program_name,t.machine_code,t.task_type,t.finish_time,t.create_time,t.status,t.update_time,u.name create_user_name
+        from mdm_machine_back_task t left join blade_user u on t.create_user=u.id
+        <where>
+            t.is_deleted=0
+            <if test="query.status!=null and query.status!=''">
+                and t.status = #{query.status}
+            </if>
+            <if test="query.programName!=null and query.programName!=''">
+                <bind name="pname" value="'%'+query.programName+'%'"/>
+                and t.program_name like #{pname}
+            </if>
+
+            <if test="query.machineCode!=null and query.machineCode!=''">
+                <bind name="machineCode" value="'%'+query.machineCode+'%'"/>
+                and t.machine_code like #{machineCode}
+            </if>
+            <if test="query.createTimeBegin!=null">
+                and t.create_time &gt;=#{query.createTimeBegin}
+            </if>
+            <if test="query.createTimeEnd!=null">
+                and t.create_time &lt;=#{query.createTimeEnd}
+            </if>
+
+        </where>
+        order by t.create_time desc
+    </select>
+</mapper>
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/service/MachineBackTaskService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/service/MachineBackTaskService.java
new file mode 100644
index 0000000..2108f2a
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/service/MachineBackTaskService.java
@@ -0,0 +1,32 @@
+
+package org.springblade.mdm.gkw.task.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springblade.core.mp.base.BizServiceImpl;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.mdm.gkw.task.entity.MachineBackTask;
+import org.springblade.mdm.gkw.task.mapper.MachineBackTaskMapper;
+import org.springblade.mdm.gkw.task.vo.MachineBackTaskQueryVO;
+import org.springblade.mdm.gkw.task.vo.MachineBackTaskVO;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 鏈哄簥鏂囦欢
+ *
+ * @author yangys
+ */
+@Slf4j
+@Service
+@AllArgsConstructor
+public class MachineBackTaskService extends BizServiceImpl<MachineBackTaskMapper, MachineBackTask> {
+
+	@Transactional(readOnly = true)
+	public IPage<MachineBackTaskVO> pageQuery(MachineBackTaskQueryVO query) {
+		return baseMapper.pageQuery(Condition.getPage(query),query);
+	}
+
+
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/vo/MachineBackTaskQueryVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/vo/MachineBackTaskQueryVO.java
new file mode 100644
index 0000000..f368d2c
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/vo/MachineBackTaskQueryVO.java
@@ -0,0 +1,25 @@
+package org.springblade.mdm.gkw.task.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+import org.springblade.core.mp.support.Query;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDate;
+
+@Schema(description = "鍑荤┛鍥炰紶浠诲姟鏌ヨ瀵硅薄")
+@Setter
+@Getter
+public class MachineBackTaskQueryVO extends Query {
+	@Schema(description = "鏂囦欢鍚嶇О")
+	private String programName;
+	@Schema(description = "鏈哄簥缂栫爜")
+	private String machineCode;
+	@Schema(description = "鍒涘缓鏃堕棿寮�濮�")
+	@DateTimeFormat(pattern = "yyyy-MM-dd")
+	private LocalDate createTimeBegin;
+	@Schema(description = "鍒涘缓鏃堕棿鎴")
+	@DateTimeFormat(pattern = "yyyy-MM-dd")
+	private LocalDate createTimeEnd;
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/vo/MachineBackTaskVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/vo/MachineBackTaskVO.java
new file mode 100644
index 0000000..864c9c5
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/vo/MachineBackTaskVO.java
@@ -0,0 +1,20 @@
+package org.springblade.mdm.gkw.task.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+import org.springblade.mdm.commons.vo.BaseVO;
+
+@Schema(description = "鏂囦欢涓嬪彂璁板綍VO")
+@Setter
+@Getter
+public class MachineBackTaskVO extends BaseVO {
+	@Schema(description = "绋嬪簭鍚嶇О")
+	private String programName;
+	@Schema(description = "鏈哄簥缂栧彿")
+	private String machineCode;
+
+	@Schema(description = "浠诲姟绫诲瀷")
+	private int taskType;
+
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/controller/FileSendRecordController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/controller/FileSendRecordController.java
index 54ad0a4..0bae8fc 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/controller/FileSendRecordController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/controller/FileSendRecordController.java
@@ -72,7 +72,6 @@
 		query.setCurrent(1);
 		query.setSize(Integer.MAX_VALUE);
 
-		//IPage<MachineBackFileVO> pages = service.pageQuery(query);
 		IPage<FileSendRecordVO> pages = fileSendRecordService.pageQuery(query);
 		List<FileSendRecordExcelVO> list = new ArrayList<>();
 		pages.getRecords().forEach(m ->{
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/entity/FileSendRecord.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/entity/FileSendRecord.java
index 3e7ea9e..dd5d532 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/entity/FileSendRecord.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/entity/FileSendRecord.java
@@ -35,6 +35,11 @@
 	 * 瀵硅薄瀛樺偍鏂囦欢鍚嶏紝澶囨煡
 	 */
 	private String ossName;
+
+	/**
+	 * 绋嬪簭鐘舵��
+	 */
+	private String programStatus;
 	/**
 	 * 鐢熸垚鏂囦欢澶у皬鐨勬樉绀烘枃鏈�
 	 * @return 鏄剧ず鏂囨湰
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/ReceiveFileCheckService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/ReceiveFileCheckService.java
index 05f06fa..c955ac7 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/ReceiveFileCheckService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/ReceiveFileCheckService.java
@@ -66,7 +66,6 @@
 			return;
 		}
 
-		AnnotationProperties annoProps = AnnotationProperties.getDefault();
 		try(InputStream fileIns = Files.newInputStream(checkFilePath);) {
 			int excepType = MachineFile.EXCEPTION_OK;
 			ByteArrayInputStream byteStream = new ByteArrayInputStream(IOUtils.toByteArray(fileIns));
@@ -88,11 +87,18 @@
 					}else{
 						//妫�鏌ユ槸鍚﹀尮閰嶄笅鍙戣褰曠殑娈垫暟
 						//姝h礋3绉掍綔涓烘煡璇㈡椂闂�
-						Date beginTime = new Date(machineFile.getFileCreateTime().getTime()-3000);
-						Date endTime = new Date(machineFile.getFileCreateTime().getTime()+3000);
+						//Date beginTime = new Date(machineFile.getFileCreateTime().getTime()-3000);
+						//Date endTime = new Date(machineFile.getFileCreateTime().getTime()+3000);
+						String likeStr;
+						if(StringUtils.isNotBlank(progNameVO.getLgPart())){
+							likeStr = prefix +"%P%";
+						}else{
+							likeStr = prefix;
+						}
 						Optional<FileSendRecord> optFile = fileSendRecordService.lambdaQuery()
 							.eq(FileSendRecord::getMachineCode,machineFile.getMachineCode())
-							.likeRight(FileSendRecord::getName,prefix).between(FileSendRecord::getCreateTime,beginTime,endTime).oneOpt();
+							.likeRight(FileSendRecord::getName,likeStr).last("limit 1")
+							.orderByDesc(FileSendRecord::getCreateTime).oneOpt();
 
 						boolean matchSendRecord;//鏂囦欢鏄惁鏈変笅鍙戣褰�
 						if(optFile.isPresent()){
@@ -112,7 +118,8 @@
 
 						if(!matchSendRecord){//濡傛灉鏂囦欢鏈笅鍙戣繃锛屾煡鐪嬫槸鍚︽湁鐜板満缂栫▼璁板綍
 							byteStream.reset();
-							//TODO 涓嬮潰杩欎簺搴旇閮芥病鏈夛紝鍥犱负鏃剁幇鍦虹紪绋�
+
+							/*
 							String planStatusLine = AnnotationUtil.removeAnnotation(machine.getControlSystem(),FileContentUtil.readLineAt(byteStream,annoProps.getStatusLineIndex()),programAnnotationService.getAnnotionDictList());
 
 							String lgNo;//鏇存敼鍗曞彿
@@ -121,14 +128,17 @@
 								lgNo = AnnotationUtil.removeAnnotation(machine.getControlSystem(), lgLine, programAnnotationService.getAnnotionDictList());
 							}else{
 								lgNo = null;
-							}
+							}*/
 
+							String devSerial = null;
+							if(StringUtils.isNotBlank(progNameVO.getLgPart())){
+								devSerial = progNameVO.getLgPart().substring(1);
+							}
 							long progOnMachineCount = programOnMachineService.lambdaQuery()
 								.eq(ProgramOnMachine::getDrawingNo,progNameVO.getDrawingNo())
 								.eq(ProgramOnMachine::getProcessNo,progNameVO.getProcessNo())
 								.eq(ProgramOnMachine::getProcessEdition,progNameVO.getProcessEdition())
-								.eq(lgNo != null,ProgramOnMachine::getDeviation,lgNo)//TODO 涓存椂鏇存敼鍗曞簭鍙峰尮閰�
-
+								.eq(devSerial != null,ProgramOnMachine::getDeviationSerial,devSerial)
 								.eq(ProgramOnMachine::getMachineCode,machineFile.getMachineCode()).count();
 
 							if(progOnMachineCount == 0){//鏃犵幇鍦虹紪绋嬭褰�
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/MdmProgramImportService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/MdmProgramImportService.java
index 5c2dc5c..903ee60 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/MdmProgramImportService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/MdmProgramImportService.java
@@ -359,6 +359,7 @@
 	 */
 	public void mdmFileAccept(String ids) throws IOException {
 
+		List<FileSendRecord>  importedRecords = new ArrayList<>();
 		List<String> idList = Func.toStrList(ids);
 
 		String dictStr = bladeRedis.get(getFileKey());
@@ -394,6 +395,8 @@
 				record.setOssName(bFile.getName());
 			}
 			fileSendRecordService.save(record);
+
+			importedRecords.add(record);
 		}
 
 	}
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 22c012b..1536d58 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
@@ -80,63 +80,21 @@
 		//鍔犲伐鏈哄簥鑺傜偣
 		return createNodeIfNotExists(programProperties.getMachineGroupCode(),NcNode.TYPE_MACHINE_GROUP, processEditionNode,programProperties,null);
 	}
-	/*
-	@Transactional
-	public NcNode createNodeTreeToProcessEdition(FlowProgramProperties programProperties) {
-		NcNode root;
-		if(programProperties.getProcessDefinitionKey().equals(FlowContants.TRY_PROCESS_KEY)){
-			if(Func.isEmpty(programProperties.getDeviation()) ||
-				(FlowContants.Y.equals(programProperties.getHasCuredProgram()) &&  FlowContants.N.equals(programProperties.getCureProgramUseable()))){
-				//鏅�氳瘯鍒囷紝鎴栬�呮湁鍥哄寲涓嶅彲鐢紝寤虹珛璇曞垏鑺傜偣
-				//璇曞垏鏍硅妭鐐�
-				root = rootNodeByName(TRY_NAME);
-				if (root == null) {
-					root = createTryNode();
-				}
-			}else{
-				//鏈夊亸绂�
-				root = rootNodeByName(DEVIATION_NAME);
-				if(root == null){
-					root = createDeviationNode();
-				}
-			}
-		}else if(programProperties.getProcessDefinitionKey().equals(FlowContants.CURE_PROCESS_KEY)){
-			root = rootNodeByName(CURE_NAME);
-			if(root == null){
-				root = createCureNode();
-			}
-		}else{
-			throw new ServiceException("娴佺▼瀹氫箟涓嶅湪鑼冨洿鍐�");
-		}
-		//鍒涘缓浜у搧鍨嬪彿鑺傜偣
-		NcNode productModelNode = createNodeIfNotExists(programProperties.getProductModel(),NcNode.TYPE_PRODUCT_MODEL, root,programProperties,null);
-		//闆剁粍浠跺彿鑺傜偣
-		NcNode drawingNoNode = createNodeIfNotExists(programProperties.getDrawingNo(),NcNode.TYPE_DRAWING_NO, productModelNode,programProperties,null);
-		//宸ヨ壓鐗堟鑺傜偣
-		//NcNode craftEditionNode = createNodeIfNotExists(programProperties.getCraftEdition(),NcNode.TYPE_CRAFT_EDITION, drawingNoNode,programProperties);
-		//宸ュ簭鍙疯妭
-		NcNode processNoNode = createNodeIfNotExists(programProperties.getProcessNo(),NcNode.TYPE_PROCESS_NO, drawingNoNode,programProperties,null);
-		//宸ュ簭鐗堟鑺傜偣
-		NcNode processEditionNode = createNodeIfNotExists(programProperties.getProcessEdition(),NcNode.TYPE_PROCESS_EDITION, processNoNode,programProperties,null);
-		//鍔犲伐鏈哄簥鑺傜偣
-		return createNodeIfNotExists(programProperties.getMachineCode(),NcNode.TYPE_MACHINE_CODE, processEditionNode,programProperties,null);
-	}
-	*/
+
 	/**
 	 * 鏍规嵁娴佺▼淇℃伅锛岃嚜鍔ㄥ垱寤哄悇涓妭鐐�,鍖呮嫭绋嬪簭鑺傜偣
 	 * @param programProperties 绋嬪簭灞炴��
 	 * @return 绋嬪簭鍖呰妭鐐瑰疄渚�
 	 */
 	@Transactional
-	public NcNode createNodeTreeWithProgram(FlowProgramProperties programProperties,Integer versionNumber) {
-		//,int rootNodeCatgory = 1:璇曞垏锛�2鍥哄寲锛�3鍋忕
-		NcNode programPkdNode = createTreeToPackage(programProperties,versionNumber);
+	public NcNode createNodeTreeWithProgram(FlowProgramProperties programProperties) {
+		NcNode programPkdNode = createTreeToPackage(programProperties);
 		//鍒犻櫎涔嬪墠鍒涘缓杩囩殑绋嬪簭鏂囦欢鑺傜偣(鍥犱负閲嶅鍦ㄧ紪鍒惰妭鐐瑰鎵�)锛岄伩鍏嶉噸澶嶆暟鎹�
-		ncNodeService.deleteSubNodes(programPkdNode.getId());
+		//ncNodeService.deleteSubNodes(programPkdNode.getId());//del 0923 18:07
 
-		List<FlowProgramFile> programFiles = flowProgramFileService.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId, programProperties.getProcessInstanceId()).list();
+		List<FlowProgramFile> programFiles = flowProgramFileService.listByProcessInstanceId(programProperties.getProcessInstanceId());
 		for (FlowProgramFile programFile : programFiles) {
-			createProgramFileNode(programFile, programPkdNode,versionNumber);//鎵�鏈夋枃浠跺寘鎷▼搴忓拰鍏朵粬锛岄兘闇�瑕佸缓绔嬭妭鐐�
+			createProgramFileNode(programFile, programPkdNode);//鎵�鏈夋枃浠跺寘鎷▼搴忓拰鍏朵粬锛岄兘闇�瑕佸缓绔嬭妭鐐�
 		}
 
 		return programPkdNode;
@@ -148,7 +106,7 @@
 	 * @param programPkdNode 绋嬪簭鍖呭悕 鑺傜偣锛岀▼搴忚妭鐐圭殑 涓婄骇
 	 * @param versionNumber 鐗堟湰鍙�
 	 */
-	private void createProgramFileNode(FlowProgramFile programFile, NcNode programPkdNode, Integer versionNumber) {
+	private void createProgramFileNode(FlowProgramFile programFile, NcNode programPkdNode) {
 		//姝ゅ搴旈伩鍏嶉噸澶嶅垱寤�
 
 		NcNode node = new NcNode();
@@ -161,11 +119,7 @@
 		node.setIsLastEdition(1);
 
 		node.setFlowProgramFileId(programFile.getId());
-		if(versionNumber == null){
-			node.setVersionNumber(1);
-		}else {
-			node.setVersionNumber(versionNumber);
-		}
+
 		node.setParentId(programPkdNode.getId());
 		node.setParentIds(programPkdNode.getParentIds()+","+programPkdNode.getId());
 
@@ -179,26 +133,50 @@
 	 * @return 绋嬪簭鍖呭悕鑺傜偣锛堟渶鏈骇锛�
 	 */
 	@Transactional
-	public NcNode createTreeToPackage(FlowProgramProperties programProperties,Integer versionNumber) {
+	public NcNode createTreeToPackage(FlowProgramProperties programProperties) {
 		NcNode machineGroupNode = createNodeTreeToMachineGroup(programProperties);
-		//NcNode processEditionNode = this.ncNodeService.getById(machineCodeNode.getParentId());
-		//鑾峰彇宸ュ簭鐗堟涓嬪叾浠栨満搴婂悕锛屽瓨鍦ㄥ垯鍒犻櫎
-		/*
-		ncNodeService.lambdaUpdate().eq(NcNode::getNodeType,NcNode.TYPE_MACHINE_GROUP)
-			.eq(NcNode::getParentId,processEditionNode.getId()).eq(NcNode::getIsLastEdition,1)
-			.ne(NcNode::getName,machineCodeNode.getName()).remove();
-
-		 */
 
 		//淇濇寔鍔犲伐鏈哄簥鏄渶鏂颁笅鍙戜换鍔$殑鏈哄簥锛屼笉鏄柊寤轰竴涓満搴婅妭鐐癸紝鎻掑彊宸ュ簭鐗堟涓嬫槸鍚︽湁鍏朵粬鐨勬満搴婏紙闆朵欢鍙蜂竴鑷达紝宸ュ簭鍙凤紝宸ュ簭鐗堟涓�鑷达級
-		//鑾峰彇
-		//绋嬪簭鍖呭悕鍦ㄦ満搴婄粍涓嬬骇 20250913
-		String programPkgName = NcNodeService.genProgramName(programProperties.getDrawingNo(),programProperties.getProcessNo(),programProperties.getProcessEdition());
-		return createNodeIfNotExists(programPkgName ,NcNode.TYPE_PROGRAM_PACKAGE, machineGroupNode,programProperties,versionNumber);
+		return createProgramPackageNode(programProperties,machineGroupNode);
+
+		//return createNodeIfNotExists(programPkgName ,NcNode.TYPE_PROGRAM_PACKAGE, machineGroupNode,programProperties,versionNumber);
 
 	}
 
 	/**
+	 * 鍒涘缓绋嬪簭鍖呭悕鑺傜偣
+	 * @param programProperties
+	 * @param parentNode
+	 * @return
+	 */
+	NcNode createProgramPackageNode(FlowProgramProperties programProperties,NcNode parentNode){
+		NcNode node = new NcNode();
+
+		node.setNodeType(NcNode.TYPE_PROGRAM_PACKAGE);
+		node.setName(NcNodeService.genProgramName(programProperties.getDrawingNo(),programProperties.getProcessNo(),programProperties.getProcessEdition()));
+		node.setProcessInstanceId(programProperties.getProcessInstanceId());
+		node.setDrawingNo(programProperties.getDrawingNo());
+		node.setDrawingNoEdition(programProperties.getDrawingNoEdition());
+		node.setCraftEdition(programProperties.getCraftEdition());
+		node.setProcessNo(programProperties.getProcessNo());
+		node.setProcessEdition(programProperties.getProcessEdition());
+		node.setProcessName(programProperties.getProcessName());
+		node.setMachineCode(programProperties.getMachineCode());
+		node.setMachineGroupCode(programProperties.getMachineGroupCode());
+		node.setProductModel(programProperties.getProductModel());
+
+		node.setDeviation(programProperties.getDeviation());
+		node.setProgramNo(programProperties.getProgramNo());
+		//node.setVersionNumber(versionNumber);
+
+		node.setParentId(parentNode.getId());
+		node.setParentIds(parentNode.subNodeParentIds());
+
+		ncNodeService.save(node);
+
+		return node;
+	}
+	/**
 	 * 涓嶅瓨鍦ㄥ垯鍒涘缓鑺傜偣
 	 * @param name 鑺傜偣鍚嶇О
 	 * @param nodeType 鑺傜偣绫诲瀷
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeHisService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeHisService.java
index 9c1112e..3b5118c 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeHisService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeHisService.java
@@ -54,7 +54,23 @@
 		ncNodeService.deleteOldEditionNodeData();
 	}
 
+	/**
+	 * 璁$畻鐗堟湰鍙�
+	 * @param pkgNode 鑺傜偣
+	 * @return 鐗堟湰鍙�
+	 */
+	public int calculateVersionNumber(NcNode pkgNode) {
+		NcNodeHis nodeHis = this.lambdaQuery().eq(NcNodeHis::getNodeType,NcNode.TYPE_PROGRAM_PACKAGE).eq(NcNodeHis::getDrawingNo,pkgNode.getDrawingNo())
+			.eq(NcNodeHis::getProcessNo,pkgNode.getProcessNo()).eq(NcNodeHis::getProcessEdition,pkgNode.getProcessEdition())
+			.eq(NcNodeHis::getMachineGroupCode,pkgNode.getMachineGroupCode()).last("limit 1").one();
 
+		if(nodeHis != null && nodeHis.getVersionNumber()!=null){
+			return nodeHis.getVersionNumber()+1;
+		}else{
+			//浠ュ線娌℃湁锛岀敓鎴愪竴涓柊鐨�
+			return 1;
+		}
+	}
 
 	/**
 	 * 鏌ヨ鑺傜偣鐨勫巻鍙插垪琛紙鑺傜偣鐨勪笂绾ц妭鐐光�濈▼搴忓寘鍚嶁�滃洜涓哄瓨鍦ㄥ涓増鏈紝鎵�浠ュ巻鍙茶褰曚篃闇�瑕佹牴鎹笉鍚岀増鏈▼搴忓寘鍚嶈繘琛屾煡璇級
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java
index 5ec9172..4351b6d 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java
@@ -253,18 +253,7 @@
 		}
 	}
 
-	public int calculateVersionNumber(NcNode pkgNode) {
-		NcNode node = this.lambdaQuery().eq(NcNode::getNodeType,NcNode.TYPE_PROGRAM_PACKAGE).eq(NcNode::getDrawingNo,pkgNode.getDrawingNo())
-			.eq(NcNode::getProcessNo,pkgNode.getProcessNo()).eq(NcNode::getProcessEdition,pkgNode.getProcessEdition())
-			.eq(NcNode::getMachineGroupCode,pkgNode.getMachineGroupCode()).last("limit 1").one();
 
-		if(node != null && node.getVersionNumber()!=null){
-			return node.getVersionNumber()+1;
-		}else{
-			//浠ュ線娌℃湁锛岀敓鎴愪竴涓柊鐨�
-			return 1;
-		}
-	}
 	/**
 	 * 鐢熸垚绋嬪簭鍖呭悕/绋嬪簭鍚嶇О
 	 * @param drawingNo 闆剁粍浠跺彿
@@ -326,12 +315,13 @@
 	 */
 	public NcNode getLastCuredProgramWithoutProcessEdition(String drawingNo, String processNo, String machineCode) {
 		Machine machine = machineService.getByCode(machineCode);
-		List<Machine> sameGroupMachines = machineService.lambdaQuery().eq(Machine::getMachineGroupCode,machine.getMachineGroupCode()).list();
-		List<String> machineCodesInGroup = sameGroupMachines.stream().map(Machine::getCode).toList();
+		//List<Machine> sameGroupMachines = machineService.lambdaQuery().eq(Machine::getMachineGroupCode,machine.getMachineGroupCode()).list();
+		//List<String> machineCodesInGroup = sameGroupMachines.stream().map(Machine::getCode).toList();
 		List<NcNode> nodes = lambdaQuery().eq(NcNode::getNodeType,NcNode.TYPE_PROGRAM_PACKAGE)
 			.eq(NcNode::getDrawingNo, drawingNo).eq(NcNode::getProcessNo, processNo)
 			.likeRight(NcNode::getParentIds,"0,2,").eq(NcNode::getIsCured,1)
-			.in(!machineCodesInGroup.isEmpty(),NcNode::getMachineCode,machineCodesInGroup)
+			.eq(NcNode::getMachineGroupCode,machine.getMachineGroupCode())
+			//.in(!machineCodesInGroup.isEmpty(),NcNode::getMachineCode,machineCodesInGroup)
 			.eq(NcNode::getIsLastEdition,1).orderByDesc(NcNode::getCreateTime).list();
 
 		if(nodes.isEmpty()){
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 38d1fcb..83e2221 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
@@ -103,6 +103,7 @@
 
 		Machine machine = machineService.getByCode(packageNodeHis.getMachineCode());//绋嬪簭鍖呰妭鐐癸紝鑾峰彇娉ㄩ噴鐢�
 
+		//闇�瑕佸鍔犵増鏈彿鐨勮繃婊�
 		List<NcNodeHis> programNodes = ncNodeHisService.lambdaQuery().eq(NcNodeHis::getParentId, approved.getNcNodeId()).list();
 
 		FlowProgramFile programFile;
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 4070519..f9dd688 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
@@ -100,7 +100,7 @@
 			dataMap.put("bz", WordReplaceUtil.CHECKED);
 		}
 
-		dataMap.put("programNo",props.getProgramNo());
+		dataMap.put("programNo",props.getDrawingNo()+"-"+props.getProcessNo()+"-"+props.getProcessEdition());
 
 		dataMap.put("fzy",WordReplaceUtil.CHECKED); //浠跨湡 鏄�
 		dataMap.put("fzn",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 d433ea4..3fa79fc 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
@@ -29,7 +29,6 @@
 import org.springblade.mdm.flow.vo.FlowVO;
 import org.springblade.mdm.program.entity.NcNodeHis;
 import org.springblade.mdm.program.service.NcNodeHisService;
-import org.springblade.mdm.program.service.NcNodeService;
 import org.springblade.mdm.statreport.utils.WordReplaceUtil;
 import org.springblade.system.feign.IDictBizClient;
 import org.springframework.stereotype.Service;
@@ -54,7 +53,6 @@
 	private final FlowProgramFileService flowProgramFileService;
 	private ApproveInfoQueryService approveInfoQueryService;
 	private final MachineService machineService;
-	private final NcNodeService nodeService;
 	private final NcNodeHisService nodeHisService;
 	private final ParamService paramService;
 	private final TaskDispatchService taskDispatchService;
@@ -63,7 +61,6 @@
 	private static final String DATE_PATTERN = "yyyy-M-d";
 	/**
 	 * 瀵煎嚭word宀告湰
-	 * @param dispatch 浠诲姟鍒嗘淳
 	 * @param props 娴佺▼灞炴��
 	 */
 	public ByteArrayOutputStream exportConfirmTableDoc(FlowProgramProperties props) throws IOException {
@@ -94,7 +91,8 @@
 			//闃叉鑰佹暟鎹姤閿�
 			dispatch = new TaskDispatch();
 		}
-		dataMap.put("bh",props.getProgramNo());//缂栧彿锛屽氨鏄暟鎺х▼搴忕紪鍙�
+		String bianhao = props.getDrawingNo()+"-"+props.getProcessNo()+"-"+props.getProcessEdition();
+		dataMap.put("bh",bianhao);//缂栧彿锛屽氨鏄暟鎺х▼搴忕紪鍙�
 
 		dataMap.put("drawingNo", props.getDrawingNo());
 		dataMap.put("processNo", props.getProcessNo());
@@ -128,7 +126,7 @@
 		}else{
 			dataMap.put("czz", "");
 		}
-		dataMap.put("programNo",props.getProgramNo());
+		dataMap.put("programNo",bianhao);
 		if(StringUtils.isNotBlank(dispatch.getInspector())) {
 			dataMap.put("jyy",dispatch.getInspector()+"/"+formatTimeForTable(dispatch.getCheckTime()));//瀹為檯妫�楠屽憳鍜屾楠屾椂闂�
 
@@ -150,8 +148,8 @@
 
 		dataMap.put("bianzhi",approveInfo.getProgrammerName()+"/"+formatTimeForTable(approveInfo.getProgrammingDate()));//缂栫▼浜哄憳
 		//approveInfo.getDispatchDate()
-		dataMap.put("jiaodui",approveInfo.getTeamLeaderName()+"/"+formatTimeForTable(approveInfo.getCheckDate()));//鏍″锛氫笓涓氱粍闀�
-		dataMap.put("shenhe",approveInfo.getSeniorName()+"/"+formatTimeForTable(approveInfo.getApproveDate()));
+		dataMap.put("jiaodui",(approveInfo.getTeamLeaderName()!=null?approveInfo.getTeamLeaderName():"")+"/"+formatTimeForTable(approveInfo.getCheckDate()));//鏍″锛氫笓涓氱粍闀�
+		dataMap.put("shenhe",(approveInfo.getSeniorName()!=null?approveInfo.getSeniorName():"")+"/"+formatTimeForTable(approveInfo.getApproveDate()));
 
 		dataMap.put("sendPath",machine.getProgSendDir()!=null?machine.getProgSendDir():"");
 
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
index 0109473..9303e84 100644
--- 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
@@ -27,10 +27,6 @@
 	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 * * * ?}")
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 bd4a5b9..3fc9e1b 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
@@ -17,14 +17,19 @@
 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.FileSendRecord;
 import org.springblade.mdm.machinefile.entity.MachineFile;
+import org.springblade.mdm.machinefile.service.FileSendRecordService;
 import org.springblade.mdm.machinefile.service.MachineFileScanService;
 import org.springblade.mdm.program.entity.NcNode;
+import org.springblade.mdm.program.entity.ProgramOnMachine;
 import org.springblade.mdm.program.service.NcNodeHisService;
 import org.springblade.mdm.program.service.NcNodeService;
 import org.springblade.mdm.program.service.ProgramAnnotationService;
+import org.springblade.mdm.program.service.ProgramOnMachineService;
 import org.springblade.mdm.task.InternalEmailNotifyTask;
 import org.springblade.mdm.task.MachineFileScanTask;
+import org.springblade.mdm.task.ReceiveDirCheckTask;
 import org.springblade.mdm.utils.FileContentUtil;
 import org.springblade.system.feign.IDictBizClient;
 import org.springblade.system.pojo.entity.DictBiz;
@@ -39,6 +44,7 @@
 import java.io.InputStream;
 import java.util.Date;
 import java.util.List;
+import java.util.Optional;
 
 @Slf4j
 @RestController
@@ -51,7 +57,7 @@
 	@Autowired
 	private MesSyncService mesSyncService;
 	@Autowired
-	private ProgramAnnotationService programAnnotationService;
+	private ReceiveDirCheckTask fileCheckTask;
 	@Autowired
 	private IDictBizClient bizDictClient;
 	@Autowired
@@ -65,6 +71,8 @@
 
 	@Autowired
 	private NcNodeHisService nodeHisService;
+	@Autowired
+	private FileSendRecordService fileSendRecordService;
 	/**
 	 * 鏂板
 	 */
@@ -172,4 +180,19 @@
 		int code = mesSyncService.postData(jsonObject);
 		log.info("mestest response:{}",code);
 	}
+
+	@GetMapping("/check-files")
+	public void checkFiles(){
+		fileCheckTask.checkFiles();
+	}
+
+	@GetMapping("/likeright")
+	public Object likeRight(){
+		Optional<FileSendRecord> optFile = fileSendRecordService.lambdaQuery()
+			.eq(FileSendRecord::getMachineCode,"P01")
+			.likeRight(FileSendRecord::getName,"a-P%").last("limit 1")
+			.orderByDesc(FileSendRecord::getCreateTime).oneOpt();
+
+		return optFile.get();
+	}
 }
diff --git a/blade-service/blade-mdm/src/test/java/org/springblade/mdm/utils/FileContentUtilTest.java b/blade-service/blade-mdm/src/test/java/org/springblade/mdm/utils/FileContentUtilTest.java
index 5bb149b..65b3cd3 100644
--- a/blade-service/blade-mdm/src/test/java/org/springblade/mdm/utils/FileContentUtilTest.java
+++ b/blade-service/blade-mdm/src/test/java/org/springblade/mdm/utils/FileContentUtilTest.java
@@ -52,7 +52,7 @@
 		//System.out.println(charset);
 	}
 
-	@Test
+	//@Test
 	public void testReadLineAt() throws IOException {
 
 		Path source = Paths.get("src/test/resources/filecontenttest.txt");
@@ -65,7 +65,7 @@
 
 	}
 
-	@Test
+	//@Test
 	public void testReplaceReadLineAt(@TempDir Path tempDir) throws IOException {
 		// 鍔犺浇璧勬簮鏂囦欢
 		Path source = Paths.get("src/test/resources/filecontenttest.txt");

--
Gitblit v1.9.3