From 5f714d1dfafa201ac52da4ebb2cc3ff7a5e3a31f Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期二, 05 八月 2025 17:36:15 +0800
Subject: [PATCH] 机床新增数据库逐渐重复报错

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramApprovedMapper.xml   |   10 ++--
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DNCSendBackService.java      |   25 ++++++------
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcProgramExportDncQueryVO.java    |    4 +-
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/machine/MachineService.java      |    1 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/CureFlowService.java            |   12 ++++--
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeAutoCreateService.java |    7 ++-
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcNode.java                   |   21 ++++++++++
 7 files changed, 55 insertions(+), 25 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/machine/MachineService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/machine/MachineService.java
index 802b835..6d95ef7 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/machine/MachineService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/machine/MachineService.java
@@ -33,6 +33,7 @@
 
 		Machine machine = new Machine();
 		BeanUtil.copyProperties(vo, machine);
+		machine.setId(null);
 		this.save(machine);
 	}
 
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 9a3684c..28cf253 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
@@ -56,7 +56,7 @@
 
 
 	@Transactional
-	public void startCure(List<NcNode> programPackageList, Map<Long,List<FlowProgramFile>> allFlowProgramFiles) {
+	public void startCure(List<NcNode> programPackageList, Map<Long,List<NcNode>> allFlowProgramFiles) {
 		//鏍规嵁鍒嗙粍鍚姩娴佺▼锛屽苟鎻掑叆鍏宠仈琛�
 		programPackageList.forEach(pkg -> {
 			this.startOne(pkg,allFlowProgramFiles.get(pkg.getId()));
@@ -67,7 +67,7 @@
 	 * 鍚姩涓�涓暟鎺х▼搴忕殑鍥哄寲娴佺▼
 	 * @param programPackage 绋嬪簭鍖呭悕 鑺傜偣瀹炰綋
 	 */
-	public void startOne(NcNode programPackage,List<FlowProgramFile> flowProgramFiles) {
+	public void startOne(NcNode programPackage,List<NcNode> programNodes) {
 		Map<String, Object> vars = null;
 		//璇ョ▼搴忓湪璁″垝浠诲姟鏃� 鑾峰彇缂栧埗锛屾牎瀵癸紝瀹℃壒鐨勪汉鍛橈紝浣滀负榛樿鐢ㄦ埛锛屽叾涓紪鍒舵椂绗竴涓浐瀹氱殑鐢ㄦ埛
 		if(programPackage.getProcessInstanceId() != null) {
@@ -100,10 +100,14 @@
 		programPackage.setProcessInstanceId(inst.getProcessInstanceId());
 		ncNodeService.updateById(programPackage);
 
-		//鏇存柊鏂囦欢鐨勬祦绋嬪疄渚媔d锛屽苟鍏ュ簱
-		flowProgramFiles.forEach(flowProgramFile -> {
+		//鏇存柊鏂囦欢鐨勬祦绋嬪疄渚媔d锛屽拰 绋嬪簭鑺傜偣鐨勬祦绋嬫枃浠秈d 骞跺叆搴�
+		programNodes.forEach(programNode -> {
+			FlowProgramFile flowProgramFile = programNode.getFlowProgramFile();
 			flowProgramFile.setProcessInstanceId(inst.getProcessInstanceId());
 			this.flowProgramFileService.save(flowProgramFile);
+
+			programNode.setFlowProgramFileId(flowProgramFile.getId());
+			this.ncNodeService.save(programNode);
 		});
 		log.info("鍚姩鍥哄寲娴佺▼瀹屾垚锛屽疄渚媔d={}", inst.getId());
 	}
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 89d421a..a992ae6 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
@@ -4,6 +4,8 @@
 import lombok.Getter;
 import lombok.Setter;
 import org.springblade.core.mp.base.BizEntity;
+import org.springblade.mdm.flow.entity.FlowProgramFile;
+
 
 @Setter
 @Getter
@@ -149,4 +151,23 @@
 	 * 瀹℃壒鏃剁殑娴佺▼瀹炰緥id锛屽彧鏈夌▼搴忓寘鑺傜偣鏈夎繖涓瓧娈靛��
 	 */
 	private String processInstanceId;
+
+	/**
+	 * 鐗堟湰鍙凤紝鏇存柊涓�娆★紙鍏ュ崌鐗堬紝dnc瀵煎叆锛夛紝灏变細+1
+	 */
+	private Integer versionNumber = 1;
+
+	transient FlowProgramFile flowProgramFile;
+
+	/**
+	 * 鏍规嵁褰撳墠鐗堟湰鍙凤紝鑾峰彇鏂板鐗堟湰鍙�
+	 * @return 鍗囩骇鍚庣殑鐗堟湰鍙�
+	 */
+	public int genNewVersionNumber(){
+		if(this.versionNumber == null){
+			return 1;
+		}else{
+			return this.versionNumber + 1;
+		}
+	}
 }
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramApprovedMapper.xml b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramApprovedMapper.xml
index c5cc0c3..4125323 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramApprovedMapper.xml
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramApprovedMapper.xml
@@ -13,17 +13,17 @@
     <select id="exportDncPageQuery" resultType="org.springblade.mdm.program.vo.NcProgramExportDncPageVO">
         select a.id,n.name,a.nc_node_id,n.drawing_no,n.drawing_no_edition,n.process_name,a.create_time from mdm_nc_program_approved a
             inner join mdm_nc_node n on a.nc_node_id=n.id
-        where a.is_deleted=0
         <where>
+            a.is_deleted=0
             <if test="query.name!=null and query.name!=''">
                 and n.name like CONCAT('%', #{query.name,jdbcType=VARCHAR},'%')
             </if>
 
-            <if test="query.passTimeBegin!=null">
-                and a.create_time &gt;= #{query.passTimeBegin}
+            <if test="query.createTimeBegin!=null">
+                and a.create_time &gt;= #{query.createTimeBegin}
             </if>
-            <if test="query.passTimeEnd!=null">
-                and a.create_time &lt;= #{query.passTimeEnd}
+            <if test="query.createTimeEnd!=null">
+                and a.create_time &lt;= #{query.createTimeEnd}
             </if>
         </where>
     </select>
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DNCSendBackService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DNCSendBackService.java
index 6b89979..18a6aa9 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DNCSendBackService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DNCSendBackService.java
@@ -132,8 +132,8 @@
 		NcProgramExchange exchange;
 		String pkgFileName = bladeRedis.get(getFileKey());
 
-		Map<Long,List<FlowProgramFile>> programPackageFileMap = new HashMap<>();
-		List<NcNode> newProgramPckageList = updateNodeDataByDNCBackData(pkgFileName,idList,programPackageFileMap);
+		Map<Long,List<NcNode>> programPackageSubMap = new HashMap<>();
+		List<NcNode> newProgramPckageList = updateNodeDataByDNCBackData(pkgFileName,idList,programPackageSubMap);
 
 		for(NcNode pkgNode :newProgramPckageList){
 			exchange = new NcProgramExchange();
@@ -144,17 +144,17 @@
 			this.save(exchange);
 		}
 
-		cureFlowService.startCure(newProgramPckageList,programPackageFileMap);
+		cureFlowService.startCure(newProgramPckageList,programPackageSubMap);
 	}
 
 	/**
 	 * 鏇存柊鑺傜偣锛屼富瑕佹槸鍒涘缓 绋嬪簭鍖呭悕 鐨勬柊鐗堟湰銆�
 	 * @param pkgFileName zip鏂囦欢鍚�
 	 * @param programPackageIdList 绋嬪簭鍖呭悕 鑺傜偣鐨刬d鍒楄〃
-	 * @param programPackageFileMap 鏂扮殑 绋嬪簭鍖呰妭鐐筰d -> =鏂囦欢鍒楄〃 map锛岀敤浜庡洖浼犳暟鎹�
+	 * @param programPackageSubMap 鏂扮殑 绋嬪簭鍖呰妭鐐筰d -> =鏂囦欢鍒楄〃 map锛岀敤浜庡洖浼犳暟鎹�
 	 * @throws IOException 璁块棶鏂囦欢寮傚父
 	 */
-	List<NcNode> updateNodeDataByDNCBackData(String pkgFileName, List<Long> programPackageIdList,Map<Long,List<FlowProgramFile>> programPackageFileMap) throws IOException {
+	List<NcNode> updateNodeDataByDNCBackData(String pkgFileName, List<Long> programPackageIdList,Map<Long,List<NcNode>> programPackageSubMap) throws IOException {
 		InputStream inputStream = this.ossTemplate.statFileStream(pkgFileName);
 		Path tempZipFile = createTempFile(inputStream);
 		List<NcNode> newProgramPackageNodeList = new ArrayList<>();
@@ -194,7 +194,8 @@
 				oriProgramPkg.setIsLastEdition(0);;
 				ncNodeService.updateById(oriProgramPkg);
 
-				List<FlowProgramFile> newFlowFiles = new ArrayList<>();
+				//List<FlowProgramFile> newFlowFiles = new ArrayList<>();
+				List<NcNode> newProgramNodes = new ArrayList<>();
 				//鏌ユ壘鍖呬笅鐨勬枃浠舵暟鎹�,
 				entryNameList.stream().filter(s -> s.startsWith(dir)).forEach(entryName -> {
 					log.info("{}涓嬬殑鏂囦欢锛歿}",dir,entryName);
@@ -211,9 +212,9 @@
 						BeanUtils.copyProperties(oldProgramNode, newProgramNode);
 						clearBaseProperties(newProgramNode);
 						newProgramNode.setIsLastEdition(1);
-						newProgramNode.setParentId(newProgramPkg.getParentId());
+						newProgramNode.setParentId(newProgramPkg.getId());
 						newProgramNode.setParentIds(newProgramPkg.getParentIds()+","+newProgramPkg.getId());
-						ncNodeService.save(newProgramNode);
+						//ncNodeService.save(newProgramNode);
 						//灏嗗洖浼犳枃浠朵笂浼狅紝骞惰褰曞埌鏁版嵁搴�
 
 						FlowProgramFile oldFlowFile = flowProgramFileService.getById(newProgramNode.getFlowProgramFileId());
@@ -230,16 +231,16 @@
 						} catch (IOException e) {
 							throw new RuntimeException(e);
 						}
-
-						newFlowFiles.add(newFlowFile);
-
+						newProgramNode.setFlowProgramFile(newFlowFile);
+						newProgramNode.setVersionNumber(oldProgramNode.genNewVersionNumber());
+						newProgramNodes.add(newProgramNode);
 						oldProgramNode.setIsLastEdition(0);
 						oldProgramNode.setIsLocked(1);
 						ncNodeService.updateById(oldProgramNode);
 					}
 				});
 
-				programPackageFileMap.put(newProgramPkg.getId(),newFlowFiles);
+				programPackageSubMap.put(newProgramPkg.getId(),newProgramNodes);
 			}
 
 		}
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 fba1a01..d3ec4c7 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
@@ -62,7 +62,7 @@
 		node.setMachineCode(programProperties.getMachineCode());
 		node.setProductModel(programProperties.getProductModel());
 		node.setFlowProgramFileId(programFile.getId());
-
+		node.setVersionNumber(1);
 		ncNodeService.save(node);
 	}
 
@@ -122,7 +122,7 @@
 			ncNode.setParentId(parentNode.getId());
 			ncNode.setParentIds(parentNode.getParentIds() + "," + parentNode.getId());
 			ncNode.setNodeType(nodeType);
-
+			ncNode.setVersionNumber(1);
 
 			//绋嬪簭鍖呰妭鐐瑰拰绋嬪簭鏂囦欢鑺傜偣鏁版嵁
 			if(NcNode.TYPE_PROGRAM_PACKAGE.equals(nodeType) || NcNode.TYPE_PROGRAM_FILE.equals(nodeType)){
@@ -173,6 +173,7 @@
 		ncNode.setParentId(0L);
 		ncNode.setParentIds("");
 		ncNode.setNodeType("10");
+		ncNode.setVersionNumber(1);
 		ncNodeService.save(ncNode);
 
 		return ncNode;
@@ -188,6 +189,7 @@
 		ncNode.setParentId(0L);
 		ncNode.setParentIds("");
 		ncNode.setNodeType("10");
+		ncNode.setVersionNumber(1);
 		ncNodeService.save(ncNode);
 
 		return ncNode;
@@ -200,6 +202,7 @@
 		ncNode.setParentId(0L);
 		ncNode.setParentIds("");
 		ncNode.setNodeType("10");
+		ncNode.setVersionNumber(1);
 		ncNodeService.save(ncNode);
 
 		return ncNode;
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcProgramExportDncQueryVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcProgramExportDncQueryVO.java
index 537793c..e16d052 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcProgramExportDncQueryVO.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcProgramExportDncQueryVO.java
@@ -18,7 +18,7 @@
 	@Schema(description = "绋嬪簭鍚嶇О")
 	private String name;
 	@Schema(description = "閫氳繃鏃堕棿寮�濮�")
-	private Date passTimeBegin;
+	private Date createTimeBegin;
 	@Schema(description = "閫氳繃鏃堕棿鎴")
-	private Date passTimeEnd;
+	private Date createTimeEnd;
 }

--
Gitblit v1.9.3