From f4c6e0e1308bccb943ca1cddfdf7f643b6b6a1aa Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期二, 15 七月 2025 23:39:30 +0800
Subject: [PATCH] 测试导出dnc

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramService.java |  244 +++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 227 insertions(+), 17 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 b8a8a03..f378729 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
@@ -25,28 +25,44 @@
  */
 package org.springblade.mdm.program.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 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;
 import org.springblade.core.oss.OssTemplate;
 import org.springblade.core.oss.model.BladeFile;
 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.entity.ProgramSeq;
 import org.springblade.mdm.program.mapper.NcProgramMapper;
 import org.springblade.mdm.program.entity.NcProgram;
+import org.springblade.mdm.program.mapper.ProgramSeqMapper;
 import org.springblade.mdm.program.vo.DncSendBackData;
+import org.springblade.mdm.program.vo.NcNodeProgramQueryVO;
+import org.springblade.mdm.program.vo.NcProgramUploadVO;
+import org.springblade.mdm.program.vo.NcProgramVO;
 import org.springblade.mdm.utils.FileContentUtil;
+import org.springframework.beans.BeanUtils;
 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;
 
 /**
  * 宸ヤ綔娴佹湇鍔″疄鐜扮被
@@ -59,34 +75,39 @@
 public class NcProgramService  extends BizServiceImpl<NcProgramMapper, NcProgram> {
 
 	private final MachineService machineService;
-
 	private final OssTemplate ossTemplate;
+	private final NcNodeService nodeService;
+	private final ProgramSeqMapper seqMapper;
 	/**
 	 * 鏌ヨ鐜版湁鍥哄寲鐨勭▼搴忥紝鏆傚畾鏉′欢锛氶浂缁勪欢鍙风浉鍚岋紝涓旀槸鍚屼竴鏈哄簥缁�
-	 * @param partNo
+	 * @param drwaingNo
 	 * @param machineCode
 	 * @return
 	 */
-	public NcProgram getCuredNcProgram(String partNo,String machineCode) {
+	public List<NcProgram> getCuredNcProgram(String drwaingNo,String machineCode) {
 		Machine machine = machineService.getByCode(machineCode);
-		return this.getBaseMapper().getCuredNcProgram(partNo,machine.getMachineGroupCode());
+		return this.getBaseMapper().getCuredNcProgram(drwaingNo,machine.getMachineGroupCode());
 	}
 
 
 	/**
 	 * 涓婁紶绋嬪簭鏂囦欢鍒版寚瀹氳妭鐐�
-	 * @param file
-	 * @param nodeId
-	 * @param category 鏂囦欢鍒嗙被锛堢▼搴忔枃浠�/鍏朵粬鏂囦欢锛�
+	 * @param uploadVO 涓婁紶鏂囦欢琛ㄥ崟鏁版嵁
 	 */
-	public void uploadProgramFile(MultipartFile file, Long nodeId, String category) {
-		BladeFile bfile = ossTemplate.putFile(file);
+	public void uploadProgramFile(NcProgramUploadVO uploadVO) {
+
+		MultipartFile file = uploadVO.getFile();
+		BladeFile bfile = ossTemplate.putFile(uploadVO.getFile());
 		String link = bfile.getLink();
 		//淇濆瓨profame
 		NcProgram prog = new NcProgram();
+		prog.setCode(generageCode());
 		prog.setName(file.getOriginalFilename());
-		prog.setNcNodeId(nodeId);
+		prog.setNcNodeId(uploadVO.getNodeId());
 		prog.setOssName(bfile.getName());
+		prog.setDrawingNo(uploadVO.getDrawingNo());
+		prog.setProcessEdition(uploadVO.getProcessEdition());
+		prog.setIsLastEdition(1);
 		boolean isTextFile = false;
 		try {
 			isTextFile = FileContentUtil.isTextFile(file.getInputStream());
@@ -95,24 +116,107 @@
 		}
 		prog.setIsTextFile(isTextFile);
 		prog.setUrl(link);
-		prog.setCategory(category);
+		prog.setCategory(uploadVO.getCategory());
 
 		this.save(prog);
 	}
 
 	/**
+	 * 涓婁紶绋嬪簭鏂囦欢鍒版寚瀹氳妭鐐�
+	 * @param uploadVO 涓婁紶鏂囦欢琛ㄥ崟鏁版嵁
+	 */
+	public void uploadProgramFileNew(NcProgramUploadVO uploadVO) {
+
+		MultipartFile file = uploadVO.getFile();
+		BladeFile bfile = ossTemplate.putFile(uploadVO.getFile());
+		String link = bfile.getLink();
+		//淇濆瓨profame
+		NcProgram prog = new NcProgram();
+		prog.setCode(generageCode());
+		prog.setName(file.getOriginalFilename());
+		prog.setNcNodeId(uploadVO.getNodeId());
+		prog.setOssName(bfile.getName());
+		prog.setDrawingNo(uploadVO.getDrawingNo());
+		prog.setProcessEdition(uploadVO.getProcessEdition());
+		prog.setIsLastEdition(1);
+		prog.setMachineCode(uploadVO.getMachineCode());
+		prog.setProcessName(uploadVO.getProcessName());
+		boolean isTextFile = false;
+		try {
+			isTextFile = FileContentUtil.isTextFile(file.getInputStream());
+		} catch (IOException e) {
+			log.warn("鍒ゆ柇鏄惁鏂囨湰鏂囦欢寮傚父",e);
+		}
+		prog.setIsTextFile(isTextFile);
+		prog.setUrl(link);
+		prog.setCategory(uploadVO.getCategory());
+
+		NcNode node = new NcNode();
+		node.setNodeType("70");//鏂囦欢鑺傜偣
+		node.setName(prog.getName());
+		node.setMachineCode(uploadVO.getMachineCode());
+		node.setParentId(uploadVO.getNodeId());
+		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());
+		this.save(prog);
+	}
+
+	String generageCode(){
+		ProgramSeq program = new ProgramSeq();
+		seqMapper.insert(program);
+
+		DecimalFormat df = new DecimalFormat("0000000000");
+		return df.format(program.getId());
+	}
+	/**
 	 * 鍒犻櫎涓�涓▼搴�
-	 * @param id
+	 * @param id 绋嬪簭id
 	 */
 	public String getFileContent(Long id) {
 		String result  ="";
 
 		NcProgram prog = this.getById(id);
-		String fileName = prog.getOssName();
-		try (InputStream inputStream = ossTemplate.statFileStream(fileName)) {
-			result = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
-		} catch (IOException e) {
-			throw new RuntimeException(e);
+		if(prog.getIsTextFile()!=null && prog.getIsTextFile()){
+			String fileName = prog.getOssName();
+			try (InputStream inputStream = ossTemplate.statFileStream(fileName)) {
+				result = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
+			} catch (IOException e) {
+				throw new RuntimeException(e);
+			}
+		}else{
+			result = "闈炴枃鏈牸寮忔枃浠�";
+		}
+		return result;
+	}
+
+	/**
+	 * 鑾峰彇鏂囦欢鍐呴タ鍝﹂偅涓�
+	 * @param ncNodeId 鑺傜偣id
+	 */
+	public String getFileContentByNodeId(Long ncNodeId) {
+		String result  ="";
+		NcNode node = this.nodeService.getById(ncNodeId);
+		LambdaQueryWrapper<NcProgram> wrapper = new LambdaQueryWrapper<>();
+		wrapper.eq(NcProgram::getBindNcNodeId, ncNodeId);
+		wrapper.eq(NcProgram::getIsLastEdition,1);
+		NcProgram prog = this.getOne(wrapper);
+		if(prog.getIsTextFile()!=null && prog.getIsTextFile()){
+			String fileName = prog.getOssName();
+			try (InputStream inputStream = ossTemplate.statFileStream(fileName)) {
+				result = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
+			} catch (IOException e) {
+				throw new RuntimeException(e);
+			}
+		}else{
+			result = "闈炴枃鏈牸寮忔枃浠�";
 		}
 		return result;
 	}
@@ -125,4 +229,110 @@
 		ossTemplate.removeFile(prog.getOssName());
 		this.getBaseMapper().deleteById(id);
 	}
+
+	public List<NcProgramVO> listByNode(Long nodeId) {
+		NcNode node = nodeService.getById(nodeId);
+		List<NcProgram> pList = this.list(Wrappers.lambdaQuery(NcProgram.class).eq(NcProgram::getNcNodeId, nodeId).eq(NcProgram::getIsLastEdition,1).orderByDesc(NcProgram::getCreateTime));
+
+		List<NcProgramVO> result = new ArrayList<>();
+
+		pList.forEach(prog -> {
+			NcProgramVO vo = new NcProgramVO();
+			BeanUtils.copyProperties(prog, vo);
+			vo.setMachineCode(node.getMachineCode());
+			result.add(vo);
+		});
+
+		return result;
+	}
+
+	/**
+	 * 鍗囩増(鍗囩骇宸ュ簭鐗堟),鍗囩骇宸ュ簭鐗堟湰锛堝寘鎷▼搴忓拰鍏朵粬闄勪欢锛�
+	 * @param bindNcNodeId 绋嬪簭鏂囦欢缁戝畾鐨勮妭鐐筰d
+	 * @param newProcessEdition 鏂扮増娆�
+	 */
+	public void upgradeProcessEdition(Long bindNcNodeId,String newProcessEdition) {
+		//NcProgram prog = this.getById(id);
+		NcProgram prog = getByBindNodeId(bindNcNodeId);
+
+		//灏嗙幇鏈夌▼搴忔洿鏂颁负闈炴渶鏂扮増鏈�
+		this.update(Wrappers.lambdaUpdate(NcProgram.class).eq(NcProgram::getBindNcNodeId,bindNcNodeId).set(NcProgram::getIsLastEdition,0));
+
+		NcProgram newVerProg = new NcProgram();
+		BeanUtils.copyProperties(prog, newVerProg);
+		newVerProg.setId(null);
+		newVerProg.setIsLastEdition(1);
+		newVerProg.setProcessEdition(newProcessEdition);
+
+		this.save(newVerProg);
+	}
+
+	/**
+	 * 鍒嗛〉鏌ヨ锛岀敤浜庡鎵规椂閫夋嫨绋嬪簭
+	 * @param query
+	 * @return
+	 */
+	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);
+	}
 }

--
Gitblit v1.9.3