From 79e81a02076cdd1e828eb06029cd51eb37522f42 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期四, 18 九月 2025 09:11:37 +0800
Subject: [PATCH] 首页下载问题修复

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/FanucProcessor.java      |    4 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcNodeHisController.java                |   14 ++++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExportDNCService.java             |    3 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AbstractProcessor.java   |    8 ++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/NcProgramExportInnerService.java       |   46 +++++++++++++--
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/DefaultProcessor.java    |   12 +---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeHisService.java                      |    2 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcNodeController.java                   |   12 ----
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/NormalFinishDataHandler.java        |    4 -
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AnnotationProcessor.java |   15 +---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/MyTestController.java                                 |   11 +++
 11 files changed, 83 insertions(+), 48 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/NormalFinishDataHandler.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/NormalFinishDataHandler.java
index 64ac2f0..86fcd99 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/NormalFinishDataHandler.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/NormalFinishDataHandler.java
@@ -17,11 +17,9 @@
 import org.springblade.mdm.program.entity.NcNode;
 import org.springblade.mdm.program.service.NcNodeAutoCreateService;
 import org.springblade.mdm.program.service.NcNodeService;
-import org.springblade.mdm.program.service.NcProgramApprovedService;
 import org.springblade.mdm.program.service.ProgramAnnotationService;
 import org.springblade.mdm.program.service.programannotation.*;
 import org.springblade.mdm.utils.ProgramFileNameParser;
-import org.springblade.system.pojo.entity.DictBiz;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -188,7 +186,7 @@
 			if(annoProps == null){
 				annoProps = AnnotationProperties.getDefault();
 			}*/
-			InputStream finishedStream = annoProcessor.setFilenameAnnotation(filename,byteInputStream);
+			InputStream finishedStream = annoProcessor.putFilenameAnnotation(filename,byteInputStream);
 			//InputStream finishedStream = AnnotationUtil.setAnnotationAndGetInputStream(byteInputStream, "GH", annoProps.getStatusLineIndex(), controlSystem, annoDictList);
 			try(finishedStream) {
 				finishedStream.reset();
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/NcProgramExportInnerService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/NcProgramExportInnerService.java
index e59e601..2b28b62 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/NcProgramExportInnerService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/NcProgramExportInnerService.java
@@ -4,16 +4,25 @@
 import jakarta.servlet.ServletOutputStream;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springblade.core.mp.base.BizServiceImpl;
 import org.springblade.core.oss.OssTemplate;
 import org.springblade.core.tool.utils.DateUtil;
+import org.springblade.mdm.basesetting.machine.entity.Machine;
+import org.springblade.mdm.basesetting.machine.service.MachineService;
 import org.springblade.mdm.machinefile.entity.MachineAcceptedFile;
+import org.springblade.mdm.machinefile.entity.MachineFile;
 import org.springblade.mdm.program.entity.NcProgramExchange;
 import org.springblade.mdm.program.mapper.NcProgramExchangeMapper;
+import org.springblade.mdm.program.service.ProgramAnnotationService;
+import org.springblade.mdm.program.service.programannotation.*;
+import org.springblade.mdm.utils.FileContentUtil;
 import org.springblade.mdm.utils.ProgramFileNameParser;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.*;
@@ -32,8 +41,10 @@
 public class NcProgramExportInnerService extends BizServiceImpl<NcProgramExchangeMapper, NcProgramExchange> {
 	private final MachineAcceptedFileService machineAcceptedService;
 	private final OssTemplate ossTemplate;
-
-
+	private final MachineFileService machineFileService;
+	private final MachineService machineService;
+	private final MachineAnnotationConfig annoConfig;
+	private final ProgramAnnotationService programAnnotationService;
 	/**
 	 * 瀵煎嚭鍒版秹瀵嗙綉
 	 * @param acceptedFileIds
@@ -49,13 +60,13 @@
 			Map<String,List<MachineAcceptedFile>> map =  acceptedFiles.stream()
 				.collect(Collectors.groupingBy(s -> ProgramFileNameParser.parseProgramName(s.getName()).logicProgramName()));
 
-			List<MachineAcceptedFile> exportedFiles = new ArrayList<>();
 			for (Map.Entry<String, List<MachineAcceptedFile>> entry : map.entrySet()) {
 				String programName = entry.getKey();
 				List<MachineAcceptedFile> acceptedFileList = entry.getValue();
 				for (MachineAcceptedFile acceptedFile : acceptedFileList) {
 					try(InputStream ins = ossTemplate.statFileStream(acceptedFile.getOssName()) ) {
-						addInputStreamToZip(zipOut,ins , programName + "/" + acceptedFile.getName());
+						MachineFile machineFile = machineFileService.getById(acceptedFile.getMachineFileId());
+						addInputStreamToZip(zipOut,ins , programName + "/" + acceptedFile.getName(),acceptedFile.getName(),machineFile.getMachineCode());
 					}
 					acceptedFile.setExportTime(DateUtil.now());
 				}
@@ -69,21 +80,42 @@
 	}
 
 
-	public void addInputStreamToZip(ZipOutputStream zipOut, InputStream inputStream, String entryName)
+	public void addInputStreamToZip(ZipOutputStream zipOut, InputStream inputStream, String entryName,String filename,String machineCode)
 		throws IOException {
 		// 鍒涘缓鏂扮殑 ZIP 鏉$洰
 		ZipEntry zipEntry = new ZipEntry(entryName);
 		zipOut.putNextEntry(zipEntry);
-
+		InputStream insAdded = setAnnotations(inputStream,filename,machineCode);
 		// 灏嗚緭鍏ユ祦鍐欏叆 ZIP 杈撳嚭娴�
 		byte[] buffer = new byte[1024];
 		int length;
-		while ((length = inputStream.read(buffer)) >= 0) {
+		while ((length = insAdded.read(buffer)) >= 0) {
 			zipOut.write(buffer, 0, length);
 		}
 
 		// 鍏抽棴褰撳墠鏉$洰
 		zipOut.closeEntry();
 	}
+
+	InputStream setAnnotations(InputStream inputStream,String filename,String machineCode) throws IOException {
+		Machine machine = this.machineService.getByCode(machineCode);
+		AnnotationProcessor annoProcessor = ProcessorHelper.getProcessor(machine.getControlSystem(),annoConfig);
+
+		AnnotationData annoData = new AnnotationData();
+		annoData.setFilename(filename);
+		annoData.setSendPath(machine.getProgSendDir());
+
+		AnnotationProperties annoProps = annoProcessor.getAnnotationProperties();
+
+		ByteArrayInputStream bais = new ByteArrayInputStream(IOUtils.toByteArray(inputStream));
+		String statusLine = FileContentUtil.readLineAt(bais,annoProps.getStatusLineIndex());
+		String status = programAnnotationService.removeAnnotation(machine.getControlSystem(),statusLine);
+		if(StringUtils.equalsAny(status,"SQ","GH","PL")){
+
+		}
+		bais.reset();
+		annoData.setProgramStatus("3");
+		return annoProcessor.putAnnotation(annoData,bais);
+	}
 }
 
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcNodeController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcNodeController.java
index 30494ee..c252cb1 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcNodeController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcNodeController.java
@@ -187,17 +187,5 @@
 
 
 
-	@GetMapping("/download-by-nodeid")
-	@Operation(summary = "涓嬭浇鑺傜偣瀵瑰簲鐨勬枃浠�", description = "涓嬭浇鑺傜偣瀵瑰簲鐨勬枃浠�")
-	public void downloadByNodeId(@Parameter(description = "鑺傜偣id") Long nodeId, HttpServletResponse response) throws IOException {
 
-		NcNode ncnode = ncNodeService.getById(nodeId);
-		if(ncnode.getFlowProgramFileId() != null) {
-			flowProgramFileService.download(ncnode.getFlowProgramFileId(),response);
-		}else{
-			log.error("闈炴枃浠惰妭鐐�");
-			throw new ServiceException("鑺傜偣鏃犳枃浠秈d");
-		}
-
-	}
 }
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcNodeHisController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcNodeHisController.java
index 4bcfc61..b3863d5 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcNodeHisController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcNodeHisController.java
@@ -98,4 +98,18 @@
 			return R.fail(e.getMessage());
 		}
 	}
+
+	@GetMapping("/download-by-nodeid")
+	@Operation(summary = "涓嬭浇鑺傜偣瀵瑰簲鐨勬枃浠�", description = "涓嬭浇鑺傜偣瀵瑰簲鐨勬枃浠�")
+	public void downloadByNodeId(@Parameter(description = "鑺傜偣id") Long nodeId, HttpServletResponse response) throws IOException {
+
+		NcNodeHis node = nodeHisService.getById(nodeId);
+		if(node.getFlowProgramFileId() != null) {
+			flowProgramFileService.download(node.getFlowProgramFileId(),response);
+		}else{
+			log.error("闈炴枃浠惰妭鐐�");
+			throw new ServiceException("鑺傜偣鏃犳枃浠秈d");
+		}
+
+	}
 }
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeHisService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeHisService.java
index 0556077..bc9dd16 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeHisService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeHisService.java
@@ -37,7 +37,7 @@
 	 * @param time
 	 */
 	public void mergeNodeToHisGeTime(Date time) {
-		Date okTime = DateUtil.minusSeconds(time,10);
+		Date okTime = DateUtil.minusSeconds(time,10);//閬垮厤mysql鏁版嵁搴撴椂闂翠笉绮剧‘瀵艰嚧涓嶈兘鍚屾
 		List<NcNode> nodes = ncNodeService.lambdaQuery().ge(NcNode::getUpdateTime,okTime)
 			.in(NcNode::getNodeType,NcNode.TYPE_PROGRAM_PACKAGE,NcNode.TYPE_PROGRAM_FILE).list();
 
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExportDNCService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExportDNCService.java
index 1248513..f9ce583 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExportDNCService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExportDNCService.java
@@ -26,7 +26,6 @@
 import org.springblade.mdm.program.service.programannotation.MachineAnnotationConfig;
 import org.springblade.mdm.program.service.programannotation.ProcessorHelper;
 import org.springblade.system.feign.IDictClient;
-import org.springblade.system.pojo.entity.DictBiz;
 import org.springframework.stereotype.Service;
 
 import java.io.*;
@@ -131,7 +130,7 @@
 				annoData.setProgramStatus(status);
 				annoData.setDeviation(programPackageNode.getDeviation());
 				annoData.setFilename(programFile.getName());
-				InputStream addedInsFinal = annoProcessor.setAnnotation(annoData,inputStream);
+				InputStream addedInsFinal = annoProcessor.putAnnotation(annoData,inputStream);
 				addedInsFinal.reset();
 				/*
 				InputStream addedInsFinal;
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AbstractProcessor.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AbstractProcessor.java
index 4574869..4eee91f 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AbstractProcessor.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AbstractProcessor.java
@@ -20,7 +20,7 @@
 	protected AnnotationProperties annotationProperties;
 
 	@Override
-	public InputStream setFilenameAnnotation(String fileName, InputStream inputStream) throws IOException {
+	public InputStream putFilenameAnnotation(String fileName, InputStream inputStream) throws IOException {
 		List<DictBiz> annoDicts = programAnnotationService.getAnnotionDictList();
 		ByteArrayInputStream bais = new ByteArrayInputStream(com.qiniu.util.IOUtils.toByteArray(inputStream));
 
@@ -39,7 +39,7 @@
 	}
 
 	@Override
-	public InputStream setAnnotation(AnnotationData annoData,InputStream inputStream) throws IOException {
+	public InputStream putAnnotation(AnnotationData annoData, InputStream inputStream) throws IOException {
 		List<DictBiz> annoDicts = programAnnotationService.getAnnotionDictList();
 
 		InputStream finishedStream;
@@ -82,6 +82,10 @@
 		this.annotationProperties= annotationProperties;
 	}
 
+	@Override
+	public AnnotationProperties getAnnotationProperties(){
+		return annotationProperties;
+	}
 	public abstract String getControlSystem();
 
 }
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AnnotationProcessor.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AnnotationProcessor.java
index 224f6f8..5a1bb90 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AnnotationProcessor.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AnnotationProcessor.java
@@ -1,15 +1,7 @@
 package org.springblade.mdm.program.service.programannotation;
 
-import org.apache.commons.lang3.StringUtils;
-import org.springblade.core.log.exception.ServiceException;
-import org.springblade.mdm.program.service.ProgramAnnotationService;
-import org.springblade.mdm.program.vo.ProgramAnnotation;
-import org.springblade.system.pojo.entity.DictBiz;
-
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.List;
-import java.util.Optional;
 
 public interface AnnotationProcessor {
 
@@ -17,7 +9,10 @@
 	void setControlSystem(String controlSystemDictVal);
 	void setAnnotationProperties(AnnotationProperties annotationProperties);
 	String getControlSystem();
-	InputStream setAnnotation(AnnotationData annoData,InputStream inputStream) throws IOException;
+	InputStream putAnnotation(AnnotationData annoData, InputStream inputStream) throws IOException;
 
-	InputStream setFilenameAnnotation(String programName,InputStream inputStream) throws IOException;
+	InputStream putFilenameAnnotation(String programName, InputStream inputStream) throws IOException;
+
+	AnnotationProperties getAnnotationProperties();
+	//InputStream puttSendPathAnnotation(String programName, InputStream inputStream) throws IOException;
 }
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/DefaultProcessor.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/DefaultProcessor.java
index 083dd1a..26edd95 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/DefaultProcessor.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/DefaultProcessor.java
@@ -1,17 +1,11 @@
 package org.springblade.mdm.program.service.programannotation;
 
-import com.qiniu.util.IOUtils;
-import org.apache.commons.io.FilenameUtils;
 import org.springblade.mdm.program.service.ProgramAnnotationService;
-import org.springblade.mdm.utils.FileContentUtil;
-import org.springblade.system.pojo.entity.DictBiz;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.List;
 
 
 @Component("defaultProcessor")
@@ -23,10 +17,10 @@
 
 
 	@Override
-	public InputStream setAnnotation(AnnotationData annoData, InputStream inputStream) throws IOException {
-		InputStream insAfter = super.setFilenameAnnotation(annoData.getFilename(),inputStream);
+	public InputStream putAnnotation(AnnotationData annoData, InputStream inputStream) throws IOException {
+		InputStream insAfter = super.putFilenameAnnotation(annoData.getFilename(),inputStream);
 
-		return super.setAnnotation(annoData, insAfter);
+		return super.putAnnotation(annoData, insAfter);
 
 	}
 
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/FanucProcessor.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/FanucProcessor.java
index 7f1d4c8..76e468e 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/FanucProcessor.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/FanucProcessor.java
@@ -22,7 +22,7 @@
 	private Pattern PATTERN = Pattern.compile("^[oO]\\d{4}");
 	private final int O_LINE = 1;
 	@Override
-	public InputStream setAnnotation(AnnotationData annoData,InputStream inputStream) throws IOException {
+	public InputStream putAnnotation(AnnotationData annoData, InputStream inputStream) throws IOException {
 		//鍦∣0001 杩欑鏂囧瓧鍚庨潰澧炲姞鏂囦欢鍚嶏紙涓嶅甫鎵╁睍鍚嶏級
 		ByteArrayInputStream bais = new ByteArrayInputStream(IOUtils.toByteArray(inputStream));
 		String line = FileContentUtil.readLineAt(bais,O_LINE);
@@ -36,7 +36,7 @@
 		}else{
 			ins1 = bais;
 		}
-		return super.setAnnotation(annoData, ins1);
+		return super.putAnnotation(annoData, ins1);
 
 	}
 
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/MyTestController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/MyTestController.java
index f76b704..dbb5551 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/MyTestController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/MyTestController.java
@@ -16,6 +16,7 @@
 import org.springblade.mdm.machinefile.entity.MachineFile;
 import org.springblade.mdm.machinefile.service.MachineFileScanService;
 import org.springblade.mdm.program.entity.NcNode;
+import org.springblade.mdm.program.service.NcNodeHisService;
 import org.springblade.mdm.program.service.NcNodeService;
 import org.springblade.mdm.program.service.ProgramAnnotationService;
 import org.springblade.mdm.task.InternalEmailNotifyTask;
@@ -32,6 +33,7 @@
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.Date;
 import java.util.List;
 
 @Slf4j
@@ -57,6 +59,9 @@
 	private WIthdrawService withdrawService;
 	@Autowired
 	private InternalEmailNotifyTask notifyTask;
+
+	@Autowired
+	private NcNodeHisService nodeHisService;
 	/**
 	 * 鏂板
 	 */
@@ -127,4 +132,10 @@
 		SOAPException s;
 		notifyTask.execute();
 	}
+
+	@GetMapping("/movehis")
+	public void moveHis(Date time){
+		//format:?time=2025-09-16%2010:11:10
+		nodeHisService.mergeNodeToHisGeTime(time);
+	}
 }

--
Gitblit v1.9.3