From 3907579a69079b5ee462d17799e3995d9cd77fd4 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期三, 17 九月 2025 21:54:38 +0800
Subject: [PATCH] 延时问题

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java |  214 ++++++++++++++++++++++++++++++++++------------------
 1 files changed, 139 insertions(+), 75 deletions(-)

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 d275a46..5ec9172 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
@@ -5,7 +5,7 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springblade.core.mp.base.BizServiceImpl;
 import org.springblade.core.tool.utils.Func;
-import org.springblade.mdm.basesetting.machine.MachineService;
+import org.springblade.mdm.basesetting.machine.service.MachineService;
 import org.springblade.mdm.basesetting.machine.entity.Machine;
 import org.springblade.mdm.program.entity.NcNode;
 import org.springblade.mdm.program.mapper.NcNodeMapper;
@@ -18,7 +18,6 @@
 import java.util.List;
 import java.util.Objects;
 import java.util.Optional;
-import java.util.stream.Collectors;
 
 /**
  * 绋嬪簭鑺傜偣
@@ -96,28 +95,6 @@
 		return this.getBaseMapper().getLastProgramNode(name);
 	}
 
-
-	/**
-	 * 杞﹁鑺傜偣
-	 * @param queryVO
-	 * @return
-	 */
-	/*
-	public List<Long> searchDrawing(NcNodeQueryVO queryVO) {
-		List<NcNode> nodes = lambdaQuery().eq(NcNode::getNodeType,NcNode.TYPE_DRAWING_NO)
-			.eq(NcNode::getIsLastEdition,1)
-			.eq(NcNode::getName,queryVO.getDrawingNo())
-			.ge(queryVO.getCreateTimeBegin()!=null,NcNode::getCreateTime,queryVO.getCreateTimeBegin())
-			.le(queryVO.getCreateTimeEnd()!=null,NcNode::getCreateTime,queryVO.getCreateTimeEnd())
-			.and(i->{
-
-				i.or().likeRight(queryVO.getProgramStatus().contains("1"),NcNode::getParentIds,"0,1,");
-				i.or().likeRight(queryVO.getProgramStatus().contains("2"),NcNode::getParentIds,"0,2,");
-				i.or().likeRight(queryVO.getProgramStatus().contains("3"),NcNode::getParentIds,"0,3,");
-			}).list();
-
-		return nodes.stream().map(NcNode::getId).toList();
-	}*/
 	/**
 	 * 棣栭〉鏍戞煡璇�
 	 * @param queryVO
@@ -165,7 +142,6 @@
 		}
 		List<NcNodeVO> oriList = this.getBaseMapper().searchList2(queryVO);
 
-
 		List<NcNodeVO> allVos = new ArrayList<>();//宸茬粡鍔犲叆杩囩殑鑺傜偣锛岀敤浜庡幓閲�
 		List<NcNodeVO> rootVos = new ArrayList<>();
 
@@ -175,10 +151,13 @@
 			List<NcNodeVO> parents = this.getBaseMapper().searchListInIds(Func.toLongList(vo.getParentIds()));
 
 			for(NcNodeVO pvo : parents){
-				if(pvo.getParentId() == 0L){
+				if(pvo.getParentId() == 0L && !rootVos.contains(pvo)){
 					rootVos.add(pvo);
 				}
-				allVos.add(pvo);
+				if(!allVos.contains(pvo)){
+					allVos.add(pvo);
+				}
+
 			}
 		}
 		for(NcNodeVO root : rootVos){
@@ -201,55 +180,20 @@
 		}
 	}
 
-	NcNodeVO toNodeVO(NcNode node){
-		NcNodeVO vo = new NcNodeVO();
 
-		BeanUtils.copyProperties(node, vo);
-
-		return vo;
-	}
-
-	/**
-	 * 鑾峰彇绋嬪簭鍖呭悕鐨勬暟鎹�
-	 * @param programName 绋嬪簭鍚嶇О锛堢▼搴忓寘鍚嶏級
-	 * @return 绋嬪簭鎶ュ寘鍚嶇殑鑺傜偣
-	 */
-	public NcNode getProgramPackageByName(String programName) {
-		List<NcNode> pkgs = this.lambdaQuery().eq(NcNode::getName, programName)
-			.eq(NcNode::getIsLastEdition,1)
-			.eq(NcNode::getNodeType,NcNode.TYPE_PROGRAM_PACKAGE).list();
-		if(pkgs.isEmpty()){
-			return null;
-		}else{
-			return pkgs.get(0);
-		}
-
-	}
-
-	/**
-	 * 鏌ヨ鑺傜偣鐨勫巻鍙插垪琛紙鑺傜偣鐨勪笂绾ц妭鐐光�濈▼搴忓寘鍚嶁�滃洜涓哄瓨鍦ㄥ涓増鏈紝鎵�浠ュ巻鍙茶褰曚篃闇�瑕佹牴鎹笉鍚岀増鏈▼搴忓寘鍚嶈繘琛屾煡璇級
-	 * @param id
-	 * @return
-	 */
-	@Transactional(readOnly = true)
-    public List<NcNodeVO> historyByNodeId(Long id) {
-		NcNode node = this.getById(id);
-		NcNode parentNode = this.getById(node.getParentId());
-		return this.baseMapper.historyByParentIdAndName(node.getName(),parentNode);
-    }
 
 	/**
 	 * 鑾峰彇鈥滅▼搴忓寘鍚嶁�濊瘯鍒囩殑鏈�鏂扮増鏈�
 	 * @param name 鑺傜偣鍚嶇О
 	 * @return 鏈�鏂扮増鏈▼搴忔姤鍚嶈妭鐐�
 	 */
-	public NcNode getLastEditionTryingProgramPackage(String name,String processEdition){
+	public NcNode getLastEditionTryingProgramPackage(String name){
 		//.or(NcNode::getIsCured,0)
 		List<NcNode> pkgList = lambdaQuery().eq(NcNode::getNodeType,NcNode.TYPE_PROGRAM_PACKAGE)
 			.eq(NcNode::getName, name).and(i->{
 				i.eq(NcNode::getIsCured, 0).or().isNull(NcNode::getIsCured);
 			}).likeRight(NcNode::getParentIds,"0,1,")
-			.eq(NcNode::getIsLastEdition,1).eq(NcNode::getProcessEdition,processEdition).orderByDesc(NcNode::getCreateTime).list();
+			.eq(NcNode::getIsLastEdition,1).orderByDesc(NcNode::getCreateTime).list();//.eq(NcNode::getProcessEdition,processEdition)
 
 		if(pkgList.isEmpty()){
 			return null;
@@ -275,23 +219,60 @@
 	}
 
 	/**
-	 * 鑾峰彇node鐨勫巻鍙插垪琛�(鍚屼竴涓埗鑺傜偣涓嬶紝鍚屽悕鐨勬墍鏈夎妭鐐癸級
+	 * 鑾峰彇璇曞垏鑺傜偣node鐨勫巻鍙插垪琛�(闆剁粍浠跺彿锛屽伐搴忓彿锛屽伐搴忕増鏈紝鏈哄簥缁勶級
 	 * @param pkgNode node
 	 * @return 鍘嗗彶鍒楄〃锛屾姤閿欒妭鐐规湰韬�
 	 */
-    public List<NcNode> getNodeHistory(NcNode pkgNode) {
+    public List<NcNode> getTryNodeHistory(NcNode pkgNode) {
+		return this.lambdaQuery().eq(NcNode::getDrawingNo,pkgNode.getDrawingNo())
+			.eq(NcNode::getProcessNo,pkgNode.getProcessNo())
+			.eq(NcNode::getProcessEdition,pkgNode.getProcessEdition())
+			.eq(NcNode::getMachineGroupCode,pkgNode.getMachineGroupCode())
+			.likeLeft(NcNode::getParentIds,"0,1,")
+			.list();//.ne(NcNode::getId,pkgNode.getId())
+		/*
 		return this.lambdaQuery().eq(NcNode::getParentId,pkgNode.getParentId())
 			.eq(NcNode::getName,pkgNode.getName()).list();//.ne(NcNode::getId,pkgNode.getId())
+
+		 */
     }
 
+	/**
+	 * 璁$畻鍘嗗彶搴忓彿锛屾牴鎹浂缁勪欢鍙凤紝宸ュ簭鍙凤紝宸ュ簭鐗堟锛屾満搴婄粍鏌ヨ锛屾煡璇㈤亾鍒欎娇鐢ㄨ鍘嗗彶缂栧彿锛屾煡璇笉鍒颁娇鐢ㄦ柊鐢熸垚鐨�
+	 */
+	public long calculateHistorySerial(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.getHisSerial()!=null){
+			return node.getHisSerial();
+		}else{
+			//浠ュ線娌℃湁锛岀敓鎴愪竴涓柊鐨�
+			return System.currentTimeMillis();//浣跨敤褰撳墠姣鏁�
+		}
+	}
+
+	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 闆剁粍浠跺彿
 	 * @param processNo 宸ュ簭鐗堟
 	 * @return 绋嬪簭鍖呭悕/绋嬪簭鍚嶇О
 	 */
-	public static String genProgramName(String drawingNo,String processNo){
-		return drawingNo+"-"+processNo;
+	public static String genProgramName(String drawingNo,String processNo,String processEdition){
+		return drawingNo+"-"+processNo+"-"+processEdition;
 	}
 
 	/**
@@ -299,10 +280,10 @@
 	 * @param programPkgName
 	 * @return
 	 */
-	public NcNode getLastEditionCuredProgramPackage(String programPkgName,String processEdition) {
+	public NcNode getLastEditionCuredProgramPackage(String programPkgName) {
 		List<NcNode> nodes = lambdaQuery().eq(NcNode::getNodeType,NcNode.TYPE_PROGRAM_PACKAGE)
 			.eq(NcNode::getName, programPkgName).likeRight(NcNode::getParentIds,"0,2,").eq(NcNode::getIsCured,1)
-			.eq(NcNode::getProcessEdition, processEdition)
+			//.eq(NcNode::getProcessEdition, processEdition)
 			.eq(NcNode::getIsLastEdition,1).list();
 
 		if(nodes.isEmpty()){
@@ -318,14 +299,40 @@
 	 * @param machineCode 鏈哄簥缂栧彿
 	 * @return
 	 */
-	public NcNode getCuredProgramPackage(String programPkgName,String machineCode) {
+	public NcNode getCuredProgramPackage(String programPkgName,String processEdition,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<NcNode> nodes = lambdaQuery().eq(NcNode::getNodeType,NcNode.TYPE_PROGRAM_PACKAGE)
-			.eq(NcNode::getName, programPkgName).likeRight(NcNode::getParentIds,"0,2,").eq(NcNode::getIsCured,1)
+			.eq(NcNode::getName, programPkgName)
+			.eq(NcNode::getProcessEdition,processEdition)
+			.likeRight(NcNode::getParentIds,"0,2,").eq(NcNode::getIsCured,1)
 			.in(!machineCodesInGroup.isEmpty(),NcNode::getMachineCode,machineCodesInGroup)
 			.eq(NcNode::getIsLastEdition,1).list();
+
+		if(nodes.isEmpty()){
+			return null;
+		}else {
+			return nodes.get(0);
+		}
+	}
+
+	/**
+	 * 鑾峰彇鏈�鏂扮殑鍥哄寲绋嬪簭锛屼笉鐢ㄥ伐搴忕増娆″尮閰�
+	 * @param drawingNo
+	 * @param processNo
+	 * @param machineCode
+	 * @return
+	 */
+	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<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::getIsLastEdition,1).orderByDesc(NcNode::getCreateTime).list();
 
 		if(nodes.isEmpty()){
 			return null;
@@ -339,10 +346,10 @@
 	 * @param programPkgName 绋嬪簭鍖呭悕
 	 * @return 鍋忕鐨勭▼搴忚妭鐐�
 	 */
-	public NcNode getLastEditionDeviationProgramPackage(String programPkgName,String processEdition) {
+	public NcNode getLastEditionDeviationProgramPackage(String programPkgName) {//,String processEdition
 		List<NcNode> nodes = lambdaQuery().eq(NcNode::getNodeType,NcNode.TYPE_PROGRAM_PACKAGE)
 			.eq(NcNode::getName, programPkgName)
-			.eq(NcNode::getProcessEdition, processEdition)
+			//.eq(NcNode::getProcessEdition, processEdition)
 			.likeRight(NcNode::getParentIds,"0,3,")
 			.eq(NcNode::getIsLastEdition,1).list();
 
@@ -380,7 +387,6 @@
 		return this.lambdaQuery().eq(NcNode::getNodeType,NcNode.TYPE_PROGRAM_FILE)
 			.eq(NcNode::getParentId,packageNodeId).eq(NcNode::getIsLastEdition,1).list();
 	}
-
 	/**
 	 * 鍗囩骇鐗堟湰鍙凤紙+1锛�
 	 * @param nodeId 鑺傜偣id
@@ -404,9 +410,67 @@
 		this.updateById(node);
     }
 	@Transactional
+	public void lock(Long id,String remark) {
+		NcNode node = this.getById(id);
+		node.lock(remark);
+		this.updateById(node);
+	}
+	@Transactional
 	public void unlock(Long id) {
 		NcNode node = this.getById(id);
 		node.unlock();
 		this.updateById(node);
 	}
+
+	/**
+	 * 鏌ヨ鍋忕鍗曠殑搴忓彿
+	 * @param programPkgNode 鍋忕鍗曠殑绋嬪簭鍖呭悕鑺傜偣
+	 * @return 搴忓彿
+	 */
+	/*
+    public long getDeviationSerialForNode(NcNode programPkgNode) {
+		return lambdaQuery().eq(NcNode::getNodeType,NcNode.TYPE_PROGRAM_PACKAGE)
+			.eq(NcNode::getName,programPkgNode.getName())
+
+			.eq(NcNode::getDrawingNo,programPkgNode.getDrawingNo())
+			.eq(NcNode::getProcessNo,programPkgNode.getProcessNo())
+			.eq(NcNode::getProcessEdition,programPkgNode.getProcessEdition())
+
+			.isNotNull(NcNode::getDeviation)
+			.le(NcNode::getCreateTime,programPkgNode.getCreateTime())  //鏃堕棿灏忎簬绛変簬褰撳墠鑺傜偣
+			.count();
+    }
+	*/
+
+	/**
+	 * 鏍规嵁涓婄骇鑺傜偣id锛岀Щ鍔ㄤ笅闈㈢殑鍔犲伐鏈哄簥鑺傜偣
+	 * @param parentId 涓婄骇鑺傜偣id
+	 */
+	/*
+	public void deleteMachineGroupNodeByParentId(Long parentId) {
+		baseMapper.deleteMachineGroupNodeByParentId(parentId);
+	}*/
+
+	/**
+	 * 鍒犻櫎鎵�鍋堕潪鏈�鏂扮増鏈殑鏁版嵁锛坔odeHIs閲岄潰宸茬粡淇濆瓨杩囷級
+	 */
+	public void deleteOldEditionNodeData() {
+		baseMapper.deleteOldEditionNodeData();
+	}
+
+	/**
+	 * //鏇存柊宸插浐鍖栫殑锛屽悓鍚嶃�佷笉鍚屾満搴婄粍鐨勭▼搴忎负閿佸畾鐘舵��
+	 * @param packageNode
+	 */
+    public void lockSameNameOtherMachineGroupProgramPackage(NcNode packageNode) {
+		lambdaUpdate().eq(NcNode::getDrawingNo,packageNode.getDrawingNo())
+			.eq(NcNode::getProcessNo,packageNode.getProcessNo())
+			.eq(NcNode::getName,packageNode.getName())
+			.ne(NcNode::getMachineGroupCode,packageNode.getMachineGroupCode())
+			.eq(NcNode::getIsCured,1)
+			.eq(NcNode::getIsLastEdition,1)
+			.set(NcNode::getIsLocked,NcNode.LOCKED)
+			.set(NcNode::getRemark,"鍥炰紶鍥哄寲鍚屽悕绋嬪簭閿佸畾")
+			.update();
+    }
 }

--
Gitblit v1.9.3