From 4b397a21eb979617f4fe9ff9fc1edb7a1be72900 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期一, 29 九月 2025 17:45:29 +0800
Subject: [PATCH] 工控网涉密网联调

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/MdmProgramImportService.java |  132 +++++++++++++++++++++----------------------
 1 files changed, 64 insertions(+), 68 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/MdmProgramImportService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/MdmProgramImportService.java
index 903ee60..6f91428 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/MdmProgramImportService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/MdmProgramImportService.java
@@ -4,7 +4,6 @@
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.FilenameUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.base.BizServiceImpl;
@@ -15,17 +14,19 @@
 import org.springblade.core.tool.utils.Func;
 import org.springblade.mdm.basesetting.machine.service.MachineService;
 import org.springblade.mdm.basesetting.machine.entity.Machine;
-import org.springblade.mdm.commons.contants.RegExpConstants;
 import org.springblade.mdm.commons.contants.ZipConstants;
 import org.springblade.mdm.gkw.programnode.vo.ProgramNameVO;
+import org.springblade.mdm.gkw.task.entity.MachineBackTask;
+import org.springblade.mdm.gkw.task.service.MachineBackTaskService;
 import org.springblade.mdm.machinefile.entity.FileSendRecord;
 import org.springblade.mdm.machinefile.service.FileSendRecordService;
 import org.springblade.mdm.program.entity.NcProgramExchange;
 import org.springblade.mdm.program.mapper.NcProgramExchangeMapper;
-import org.springblade.mdm.program.service.programannotation.AnnotationProperties;
+import org.springblade.mdm.program.service.programannotation.*;
 import org.springblade.mdm.program.vo.MdmProgramImportVO;
 import org.springblade.mdm.utils.FileContentUtil;
 import org.springblade.mdm.utils.ProgramFileNameParser;
+import org.springblade.system.pojo.entity.DictBiz;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
@@ -39,7 +40,6 @@
 import java.time.Duration;
 import java.util.*;
 import java.nio.file.*;
-import java.util.regex.Matcher;
 import java.util.stream.Stream;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipInputStream;
@@ -61,6 +61,11 @@
 	private FileSendRecordService fileSendRecordService;
 	@Autowired
 	private OssTemplate ossTemplate;
+	@Autowired
+	private AnnotationProcessorHelper annotationProcessorHelper;
+	@Autowired
+	private MachineBackTaskService machineBackTaskService;
+
 	private String getFileKey(){
 		return "mdmgkwimpfile-"+ AuthUtil.getUserId();
 	}
@@ -251,8 +256,8 @@
 		MdmProgramImportVO vo = new MdmProgramImportVO();
 		vo.setFilename(path.getFileName().toString());
 
-		ProgramNameVO pnmameVO = tryParseProgramName(vo.getFilename());
-		vo.setDrawingNo(pnmameVO.getDrawingNo());
+		ProgramNameVO progNmameVO = tryParseProgramName(vo.getFilename());
+		vo.setDrawingNo(progNmameVO.getDrawingNo());
 
 		try (InputStream inputStream = Files.newInputStream(path)) {
 			// 浣跨敤杈撳叆娴佽鍙栨枃浠跺唴瀹�
@@ -277,7 +282,7 @@
 			Machine matchedMachine = machineService.getMachineBySendPathAnnotation(sendPathLine);
 
 			if (matchedMachine != null) {
-				vo.setName(pnmameVO.logicProgramName());
+				vo.setName(progNmameVO.logicProgramName());
 				vo.setMachineCode(matchedMachine.getCode());
 
 				vo.setFullPath(path.toString());//鏂囦欢鍦板潃
@@ -291,68 +296,7 @@
 		}
 		return vo;
 	}
-	/**
-	 * 瑙f瀽鍑洪浂缁勪欢濂�
-	 * @param filename
-	 * @return
-	 */
-	/*
-	String parseDrawingNo(String filename){
 
-		/*
-		String drawingNo = "";
-		int idx = filename.lastIndexOf("-");
-		String temp;
-		if(idx != -1){
-			temp = filename.substring(0,idx);
-
-			idx = temp.lastIndexOf("-");
-			if(idx != -1){
-				temp = temp.substring(0,idx);
-
-				//鍘绘帀宸ュ簭鐗堟
-				idx = temp.lastIndexOf("-");
-				if(idx != -1){
-					temp = temp.substring(0,idx);
-
-					//鍘绘帀宸ュ簭鍙�
-					idx = temp.lastIndexOf("-");
-					if(idx != -1){
-						drawingNo = temp.substring(0,idx);
-					}
-				}
-			}
-			//浠ヤ笂鍘绘帀浜嗘渶鍚�2娈垫鏁板拰娈靛彿
-
-
-		}
-		return drawingNo;
-
-
-	}
-
-	String parseProgramName(String filename){
-		String programName = "";
-		int idx = filename.lastIndexOf("-");
-		String temp;
-		if(idx != -1){
-			temp = filename.substring(0,idx);
-
-			idx = temp.lastIndexOf("-");
-			if(idx != -1){
-				temp = temp.substring(0,idx);
-
-				//鍘绘帀宸ュ簭鐗堟
-				idx = temp.lastIndexOf("-");
-				if(idx != -1){
-					programName = temp.substring(0,idx);
-				}
-			}
-			//浠ヤ笂鍘绘帀浜嗘渶鍚�2娈垫鏁板拰娈靛彿
-		}
-		return programName;
-	}
-*/
 	/**
 	 * 鍏ュ簱mdm娑夊瘑缃戞枃浠�
 	 * @param ids id鍒楄〃閫楀彿鍒嗛殧
@@ -369,6 +313,7 @@
 		Path extractDir = Paths.get(dictStr);
 		List<MdmProgramImportVO> list = readTempDir(extractDir);
 
+		//List<DictBiz> annoDictList = programAnnotationService.getAnnotionDictList();
 		String destFileFull;
 		for(String str : idList){
 			Optional<MdmProgramImportVO> optVO = list.stream().filter(vo -> vo.getId().equals(str)).findFirst();
@@ -381,6 +326,7 @@
 
 			destFileFull = vo.getSendPath()+File.separator+vo.getFilename();
 			File destFile = new File(destFileFull);
+
 			FileUtils.forceMkdirParent(destFile);
 			FileUtils.copyFile(new File(str),destFile);
 
@@ -394,10 +340,60 @@
 				BladeFile bFile = ossTemplate.putFile(record.getName(), inputStream);
 				record.setOssName(bFile.getName());
 			}
+
+			try(InputStream inputStream = ossTemplate.statFileStream(record.getOssName())){
+				//璇诲彇绋嬪簭鐘舵��
+				Machine machine = this.machineService.getByCode(record.getMachineCode());
+				AnnotationProcessor processor = annotationProcessorHelper.getProcessor(machine.getControlSystem());
+				AnnotationData annotationData = processor.readAnnotationData(inputStream);
+
+				record.setDeviation(annotationData.getDeviation());
+				ProgramNameVO nameVO = ProgramFileNameParser.parseProgramName(record.getName());
+				record.setDeviationSerial(nameVO.lgSerial());
+
+				record.setProgramStatus(annotationData.getProgramStatus());
+			}
 			fileSendRecordService.save(record);
 
 			importedRecords.add(record);
 		}
 
+		machineBackTaskService.saveBatch(parseMachineBackTask(importedRecords));
+	}
+
+	/**
+	 * 鍒涘缓鏈哄簥鍥炰紶浠诲姟
+	 * @param importedRecords 瀵煎叆璁板綍鍒楄〃
+	 */
+	List<MachineBackTask> parseMachineBackTask(List<FileSendRecord>  importedRecords){
+		List<FileSendRecord> recList = importedRecords.stream().filter(r -> AnnotationUtil.SQ.equals(r.getProgramStatus())
+			|| AnnotationUtil.LG.equals(r.getProgramStatus())).toList();
+
+		Map<String,FileSendRecord> map = new HashMap<>();
+		for(FileSendRecord record : recList){
+			ProgramNameVO nameVO = ProgramFileNameParser.parseProgramName(record.getName());
+			String key = record.getMachineCode()+","+nameVO.logicProgramName();
+
+			map.put(key,record);
+		}
+
+		List<MachineBackTask> backTasks = new ArrayList<>();
+		for(String key : map.keySet()){
+			MachineBackTask task = new MachineBackTask();
+			task.setTaskType(MachineBackTask.TASK_TYPE_PROGRAM);
+
+			FileSendRecord record = map.get(key);
+			task.setMachineCode(record.getMachineCode());
+
+			ProgramNameVO nameVO = ProgramFileNameParser.parseProgramName(record.getName());
+			task.setDeviation(record.getDeviation());
+			task.setDeviationSerial(record.getDeviationSerial());
+
+			task.setProgramName(nameVO.logicProgramName());
+			task.setSegCount(nameVO.getSegmentCount());
+			backTasks.add(task);
+		}
+		//鎻愬彇绋嬪簭鍖呭悕锛屾満搴婄紪鐮侀泦鍚�
+		return backTasks;
 	}
 }

--
Gitblit v1.9.3