From 44fda5fa3787c78e74d62f9713dd36abdeadcac8 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期五, 18 七月 2025 21:27:38 +0800
Subject: [PATCH] 上传接口调整

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramService.java |  108 ++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 104 insertions(+), 4 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramService.java
index dfe7c10..4c76756 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramService.java
@@ -31,7 +31,9 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.flowable.engine.*;
 import org.springblade.core.mp.base.BizServiceImpl;
 import org.springblade.core.mp.support.Condition;
@@ -53,12 +55,14 @@
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
 import java.text.DecimalFormat;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 
 /**
  * 宸ヤ綔娴佹湇鍔″疄鐜扮被
@@ -136,6 +140,7 @@
 		prog.setProcessEdition(uploadVO.getProcessEdition());
 		prog.setIsLastEdition(1);
 		prog.setMachineCode(uploadVO.getMachineCode());
+		prog.setProcessName(uploadVO.getProcessName());
 		boolean isTextFile = false;
 		try {
 			isTextFile = FileContentUtil.isTextFile(file.getInputStream());
@@ -154,6 +159,10 @@
 		node.setDrawingNo(uploadVO.getDrawingNo());
 		node.setProcessName(uploadVO.getProcessName());
 
+		NcNode parentNode = nodeService.getById(uploadVO.getNodeId());
+		node.setParentIds(parentNode.getParentIds()+","+uploadVO.getNodeId());
+		//uploadVO.getre
+		//node.setDescription(uploadVO.getDrawingNo());
 		nodeService.save(node);
 
 		prog.setBindNcNodeId(node.getId());
@@ -239,13 +248,15 @@
 
 	/**
 	 * 鍗囩増(鍗囩骇宸ュ簭鐗堟),鍗囩骇宸ュ簭鐗堟湰锛堝寘鎷▼搴忓拰鍏朵粬闄勪欢锛�
-	 * @param id 绋嬪簭鏂囦欢id
+	 * @param bindNcNodeId 绋嬪簭鏂囦欢缁戝畾鐨勮妭鐐筰d
 	 * @param newProcessEdition 鏂扮増娆�
 	 */
-	public void upgradeProcessEdition(long id,String newProcessEdition) {
-		NcProgram prog = this.getById(id);
+	public void upgradeProcessEdition(Long bindNcNodeId,String newProcessEdition) {
+		//NcProgram prog = this.getById(id);
+		NcProgram prog = getByBindNodeId(bindNcNodeId);
+
 		//灏嗙幇鏈夌▼搴忔洿鏂颁负闈炴渶鏂扮増鏈�
-		this.update(Wrappers.lambdaUpdate(NcProgram.class).eq(NcProgram::getId,id).set(NcProgram::getIsLastEdition,0));
+		this.update(Wrappers.lambdaUpdate(NcProgram.class).eq(NcProgram::getBindNcNodeId,bindNcNodeId).set(NcProgram::getIsLastEdition,0));
 
 		NcProgram newVerProg = new NcProgram();
 		BeanUtils.copyProperties(prog, newVerProg);
@@ -264,4 +275,93 @@
 	public IPage<NcProgramVO> pageQuery(NcNodeProgramQueryVO query) {
 		return this.getBaseMapper().pageQuery(Condition.getPage(query),query);
 	}
+
+	/**
+	 * 涓嬪彂缁欎綘鏈哄簥
+	 * @param bindNcNodeId 涓庣▼搴忕粦瀹氱殑鑺傜偣id
+	 */
+	public void sendByBindNodeId(Long bindNcNodeId) throws IOException {
+		//NcNode node = this.nodeService.getById(bindNodeId);
+		LambdaQueryWrapper<NcProgram> wrapper = new LambdaQueryWrapper<>();
+		wrapper.eq(NcProgram::getBindNcNodeId, bindNcNodeId);
+		wrapper.eq(NcProgram::getIsLastEdition,1);
+		NcProgram prog = this.getOne(wrapper);
+
+		String filePath = getFilePath(prog);
+		try(InputStream ins = ossTemplate.statFileStream(prog.getOssName());){
+			File targetFile = new File(filePath);
+			FileUtils.copyInputStreamToFile(ins, targetFile);
+		}
+	}
+
+	String getFilePath(NcProgram prog){
+		Machine machine = machineService.getByCode(prog.getMachineCode());
+		String dirPath = machine.getProgSendDir();
+
+		dirPath = StringUtils.removeEnd(StringUtils.removeEnd(dirPath,"/"),"\\");
+		File dirs = new File(dirPath);
+		if(!dirs.exists()){
+			dirs.mkdirs();
+		}
+
+		return dirPath+File.separator+prog.getName();
+	}
+
+	/**
+	 *
+	 * @param bindNcNodeId
+	 * @return
+	 */
+	public NcProgram getByBindNodeId(Long bindNcNodeId) {
+
+		LambdaQueryWrapper<NcProgram> wrapper = new LambdaQueryWrapper<>();
+		wrapper.eq(NcProgram::getBindNcNodeId, bindNcNodeId);
+		wrapper.eq(NcProgram::getIsLastEdition,1);
+
+		Optional<NcProgram> progOpt = this.getOneOpt(wrapper);
+
+		return progOpt.orElse(null);
+	}
+
+	/**
+	 * 鏍规嵁绋嬪簭鍚嶇О鑾峰彇鏈�鏂扮殑绋嬪簭鏁版嵁
+	 * @param name 绋嬪簭鍚嶇О
+	 * @return
+	 */
+	public NcProgram getByName(String name) {
+		LambdaQueryWrapper<NcProgram> wrapper = new LambdaQueryWrapper<>();
+		wrapper.eq(NcProgram::getName, name);
+		wrapper.eq(NcProgram::getIsLastEdition,1);
+		Optional<NcProgram> progOpt = this.getOneOpt(wrapper);
+
+		return progOpt.orElse(null);
+	}
+
+	/**
+	 *
+	 * @param nodeId 涓婄骇鑺傜偣id
+	 * @param name 绋嬪簭鍚嶇О
+	 */
+	public boolean programExistsUnderNode(Long nodeId, String name) {
+		LambdaQueryWrapper<NcProgram> wrapper = new LambdaQueryWrapper<>();
+		wrapper.eq(nodeId!=null,NcProgram::getNcNodeId, nodeId);
+		wrapper.eq(NcProgram::getName, name);
+		wrapper.eq(NcProgram::getIsLastEdition,1);
+
+		return this.count(wrapper)>0;
+	}
+
+	/**
+	 *
+	 * @param nodeId 涓婄骇鑺傜偣id
+	 * @param name 绋嬪簭鍚嶇О
+	 */
+	public boolean programExistsUnderOtherNode(Long nodeId, String name) {
+		LambdaQueryWrapper<NcProgram> wrapper = new LambdaQueryWrapper<>();
+		wrapper.ne(NcProgram::getNcNodeId, nodeId);
+		wrapper.eq(NcProgram::getName, name);
+		wrapper.eq(NcProgram::getIsLastEdition,1);
+
+		return this.count(wrapper)>0;
+	}
 }

--
Gitblit v1.9.3