From 43b6b4b905fb272e2d7d9c0738610c4204c958ce Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期五, 22 八月 2025 01:07:24 +0800
Subject: [PATCH] 增加首页搜索接口参数调整

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java |  220 ++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 208 insertions(+), 12 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 5fcfd04..d275a46 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
@@ -1,13 +1,12 @@
 
 package org.springblade.mdm.program.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.core.tool.utils.Func;
-import org.springblade.mdm.basesetting.machine.vo.MachineVO;
+import org.springblade.mdm.basesetting.machine.MachineService;
+import org.springblade.mdm.basesetting.machine.entity.Machine;
 import org.springblade.mdm.program.entity.NcNode;
 import org.springblade.mdm.program.mapper.NcNodeMapper;
 import org.springblade.mdm.program.vo.*;
@@ -18,6 +17,8 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
+import java.util.Optional;
+import java.util.stream.Collectors;
 
 /**
  * 绋嬪簭鑺傜偣
@@ -29,6 +30,7 @@
 @AllArgsConstructor
 public class NcNodeService extends BizServiceImpl<NcNodeMapper, NcNode> {
 
+	private final MachineService machineService;
 
 	public void saveNcCode(NcNodeVO vo) {
 		NcNode ncNode = new NcNode();
@@ -75,7 +77,7 @@
 	 * @return
 	 */
 	public List<NcNodeVO> lazyList(Long parentId) {
-// 鍒ゆ柇鐐瑰嚮鎼滅储浣嗘槸娌℃湁鏌ヨ鏉′欢鐨勬儏鍐�
+		// 鍒ゆ柇鐐瑰嚮鎼滅储浣嗘槸娌℃湁鏌ヨ鏉′欢鐨勬儏鍐�
 		if (Func.isEmpty(parentId)) {
 			parentId = 0L;
 		}
@@ -96,14 +98,34 @@
 
 
 	/**
+	 * 杞﹁鑺傜偣
+	 * @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
 	 * @return
 	 */
-	public List<NcNodeVO> searchList(NcNodeQueryVO queryVO) {
+	public List<NcNodeVO> searchList(NcNodeOldQueryVO queryVO) {
 		//1.鏍规嵁鍏宠繘瀛楀拰鑺傜偣绫诲瀷鏌ヨ鍒濆鍒楄〃,鏌ヨ鐨勫師濮嬪垪琛紝闇�瑕乭asChild瀛楁锛屾墍浠ヤ娇鐢╩apper.xml
 		List<NcNodeVO> oriList = this.getBaseMapper().searchList(queryVO);
-		//List<NcNode> list = this.lambdaQuery().eq(NcNode::getNodeType, queryVO.getNodeType()).like(NcNode::getName, queryVO.getName()).list();
 		if ("10".equals(queryVO.getNodeType())) {
 			//鎼滅储鐨勬牴绾у埆锛岀洿鎺ヨ繑鍥�
 			return oriList;
@@ -111,8 +133,6 @@
 
 		List<NcNodeVO> allVos = new ArrayList<NcNodeVO>();//宸茬粡鍔犲叆杩囩殑鑺傜偣锛岀敤浜庡幓閲�
 		List<NcNodeVO> rootVos = new ArrayList<NcNodeVO>();
-
-		//List<NcNode> rootNodes = new ArrayList<>();
 
 		for(NcNodeVO vo : oriList){
 			allVos.add(vo);
@@ -129,6 +149,40 @@
 		for(NcNodeVO root : rootVos){
 			addNodeChildren(root, allVos);
 
+		}
+		return rootVos;
+	}
+
+	/**
+	 * 棣栭〉鎼滅储 鏂扮殑
+	 * @param queryVO 鏌ヨ鍙傛暟
+	 * @return
+	 */
+	public List<NcNodeVO> searchList2(NcNodeQueryVO queryVO) {
+		//1.鏍规嵁闆剁粍浠跺彿鍜屽垱寤烘椂闂存煡璇㈠垵濮嬪垪琛�,鏌ヨ鐨勫師濮嬪垪琛紝闇�瑕乭asChild瀛楁锛屾墍浠ヤ娇鐢╩apper.xml
+		if(queryVO.getCreateTimeEnd()!=null){
+			queryVO.setCreateTimeEnd(queryVO.getCreateTimeEnd().plusDays(1));
+		}
+		List<NcNodeVO> oriList = this.getBaseMapper().searchList2(queryVO);
+
+
+		List<NcNodeVO> allVos = new ArrayList<>();//宸茬粡鍔犲叆杩囩殑鑺傜偣锛岀敤浜庡幓閲�
+		List<NcNodeVO> rootVos = new ArrayList<>();
+
+		for(NcNodeVO vo : oriList){
+			allVos.add(vo);
+			//涓婄骇鍚勭骇鐨勮妭鐐�
+			List<NcNodeVO> parents = this.getBaseMapper().searchListInIds(Func.toLongList(vo.getParentIds()));
+
+			for(NcNodeVO pvo : parents){
+				if(pvo.getParentId() == 0L){
+					rootVos.add(pvo);
+				}
+				allVos.add(pvo);
+			}
+		}
+		for(NcNodeVO root : rootVos){
+			addNodeChildren(root, allVos);
 		}
 		return rootVos;
 	}
@@ -161,7 +215,9 @@
 	 * @return 绋嬪簭鎶ュ寘鍚嶇殑鑺傜偣
 	 */
 	public NcNode getProgramPackageByName(String programName) {
-		List<NcNode> pkgs = this.lambdaQuery().eq(NcNode::getName, programName).eq(NcNode::getNodeType,NcNode.TYPE_PROGRAM_PACKAGE).list();
+		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{
@@ -183,13 +239,17 @@
     }
 
 	/**
-	 * 鑾峰彇鈥滅▼搴忓寘鍚嶁�濈殑鏈�鏂扮増鏈�
+	 * 鑾峰彇鈥滅▼搴忓寘鍚嶁�濊瘯鍒囩殑鏈�鏂扮増鏈�
 	 * @param name 鑺傜偣鍚嶇О
 	 * @return 鏈�鏂扮増鏈▼搴忔姤鍚嶈妭鐐�
 	 */
-	public NcNode getLastEditionProgramPackage(String name){
+	public NcNode getLastEditionTryingProgramPackage(String name,String processEdition){
+		//.or(NcNode::getIsCured,0)
 		List<NcNode> pkgList = lambdaQuery().eq(NcNode::getNodeType,NcNode.TYPE_PROGRAM_PACKAGE)
-			.eq(NcNode::getName, name).eq(NcNode::getIsLastEdition,1).orderByDesc(NcNode::getCreateTime).list();
+			.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();
 
 		if(pkgList.isEmpty()){
 			return null;
@@ -213,4 +273,140 @@
 			return nodes.get(0);
 		}
 	}
+
+	/**
+	 * 鑾峰彇node鐨勫巻鍙插垪琛�(鍚屼竴涓埗鑺傜偣涓嬶紝鍚屽悕鐨勬墍鏈夎妭鐐癸級
+	 * @param pkgNode node
+	 * @return 鍘嗗彶鍒楄〃锛屾姤閿欒妭鐐规湰韬�
+	 */
+    public List<NcNode> getNodeHistory(NcNode pkgNode) {
+		return this.lambdaQuery().eq(NcNode::getParentId,pkgNode.getParentId())
+			.eq(NcNode::getName,pkgNode.getName()).list();//.ne(NcNode::getId,pkgNode.getId())
+    }
+
+	/**
+	 * 鐢熸垚绋嬪簭鍖呭悕/绋嬪簭鍚嶇О
+	 * @param drawingNo 闆剁粍浠跺彿
+	 * @param processNo 宸ュ簭鐗堟
+	 * @return 绋嬪簭鍖呭悕/绋嬪簭鍚嶇О
+	 */
+	public static String genProgramName(String drawingNo,String processNo){
+		return drawingNo+"-"+processNo;
+	}
+
+	/**
+	 * 鑾峰彇鏈�鏂扮増鏈殑 宸插浐鍖栬妭鐐�
+	 * @param programPkgName
+	 * @return
+	 */
+	public NcNode getLastEditionCuredProgramPackage(String programPkgName,String processEdition) {
+		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::getIsLastEdition,1).list();
+
+		if(nodes.isEmpty()){
+			return null;
+		}else {
+			return nodes.get(0);
+		}
+	}
+
+	/**
+	 * 鑾峰彇鏈�鏂扮増鏈殑 宸插浐鍖栬妭鐐�
+	 * @param programPkgName 绋嬪簭鍖呭悕
+	 * @param machineCode 鏈哄簥缂栧彿
+	 * @return
+	 */
+	public NcNode getCuredProgramPackage(String programPkgName,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)
+			.in(!machineCodesInGroup.isEmpty(),NcNode::getMachineCode,machineCodesInGroup)
+			.eq(NcNode::getIsLastEdition,1).list();
+
+		if(nodes.isEmpty()){
+			return null;
+		}else {
+			return nodes.get(0);
+		}
+	}
+
+	/**
+	 * 鑾峰彇鏈�鏂扮増鏈殑 鍋忕鑺傜偣
+	 * @param programPkgName 绋嬪簭鍖呭悕
+	 * @return 鍋忕鐨勭▼搴忚妭鐐�
+	 */
+	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)
+			.likeRight(NcNode::getParentIds,"0,3,")
+			.eq(NcNode::getIsLastEdition,1).list();
+
+		if(nodes.isEmpty()){
+			return null;
+		}else {
+			return nodes.get(0);
+		}
+	}
+
+	/**
+	 * 鏍规嵁娴佺▼瀹炰緥id鑾峰彇node鑺傜偣锛岄兘鏄▼搴忓寘鑺傜偣
+	 * @param processInstanceId 娴佺▼瀹炰緥id
+	 * @return 瀵瑰簲棰濈郴娆镐絾閭�
+	 */
+    public NcNode getByProcessInstanceId(String processInstanceId) {
+		Optional<NcNode> nodeOpt = this.lambdaQuery().eq(NcNode::getProcessInstanceId,processInstanceId).oneOpt();
+		return nodeOpt.orElse(null);
+    }
+
+	/**
+	 * 鐗╃悊鍒犻櫎鑺傜偣id涓嬬殑瀛愯妭鐐癸紙鎬ц兘鑰冭檻锛屽惁鍒欐暟鎹お澶氾級
+	 * @param nodeId 鑺傜偣id
+	 */
+	public void deleteSubNodes(Long nodeId) {
+		this.baseMapper.deleteSubNodes(nodeId);
+	}
+
+	/**
+	 * 鑾峰彇绋嬪簭鍖呬笅鎵�鏈夊眰搴忔枃浠惰妭鐐�
+	 * @param packageNodeId 绋嬪簭鍖呭悕 鑺傜偣id
+	 * @return 鍖呬笅灞炵殑绋嬪簭鏂囦欢
+	 */
+	public List<NcNode> getProgramFilesByPackageId(Long packageNodeId) {
+		return this.lambdaQuery().eq(NcNode::getNodeType,NcNode.TYPE_PROGRAM_FILE)
+			.eq(NcNode::getParentId,packageNodeId).eq(NcNode::getIsLastEdition,1).list();
+	}
+
+	/**
+	 * 鍗囩骇鐗堟湰鍙凤紙+1锛�
+	 * @param nodeId 鑺傜偣id
+	 */
+	@Transactional
+	public void upgradeVersionNumber(Long nodeId) {
+		NcNode node = this.getById(nodeId);
+		node.upgradeVersionNumber();
+		this.updateById(node);
+
+	}
+
+	/**
+	 * 閿佸畾鑺傜偣
+	 * @param id 绋嬪簭鍖呰妭鐐筰d
+	 */
+	@Transactional
+    public void lock(Long id) {
+		NcNode node = this.getById(id);
+		node.lock();
+		this.updateById(node);
+    }
+	@Transactional
+	public void unlock(Long id) {
+		NcNode node = this.getById(id);
+		node.unlock();
+		this.updateById(node);
+	}
 }

--
Gitblit v1.9.3