From 31ecdb8c700529a59dd762f0c47f0ed9c66d5092 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期四, 25 九月 2025 20:40:07 +0800
Subject: [PATCH] 工控网任务

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/MdmProgramImportService.java |   59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 58 insertions(+), 1 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..75c8c24 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
@@ -1,6 +1,7 @@
 
 package org.springblade.mdm.program.service;
 
+import jodd.util.annotation.AnnotationParser;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.io.FileUtils;
@@ -18,14 +19,17 @@
 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;
@@ -61,6 +65,11 @@
 	private FileSendRecordService fileSendRecordService;
 	@Autowired
 	private OssTemplate ossTemplate;
+	@Autowired
+	private AnnotationProcessorHelper annotationProcessorHelper;
+	@Autowired
+	private MachineBackTaskService machineBackTaskService;
+
 	private String getFileKey(){
 		return "mdmgkwimpfile-"+ AuthUtil.getUserId();
 	}
@@ -369,6 +378,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();
@@ -394,10 +404,57 @@
 				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);
+				/*
+				ProgramNameVO nameVO = ProgramFileNameParser.parseProgramName(record.getName());
+				if(StringUtils.isNotBlank(nameVO.getLgPart())) {
+					record.setDeviation(annotationData.getDeviation());
+				}*/
+				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 ->{
+			return 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.setProgramName(nameVO.logicProgramName());
+			task.setSegCount(nameVO.getSegmentCount());
+			backTasks.add(task);
+		}
+		//鎻愬彇绋嬪簭鍖呭悕锛屾満搴婄紪鐮侀泦鍚�
+		return backTasks;
 	}
 }

--
Gitblit v1.9.3