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/machinefile/service/MachineFileScanService.java |   50 ++++++++++++++++++++++++++++++--------------------
 1 files changed, 30 insertions(+), 20 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/MachineFileScanService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/MachineFileScanService.java
index ab4e604..d4877d2 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/MachineFileScanService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/MachineFileScanService.java
@@ -1,15 +1,18 @@
 package org.springblade.mdm.machinefile.service;
 
+import com.alibaba.excel.util.StringUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.mdm.basesetting.machine.service.MachineService;
 import org.springblade.mdm.basesetting.machine.entity.Machine;
 import org.springblade.mdm.commons.service.ParamService;
+import org.springblade.mdm.gkw.programnode.vo.ProgramNameVO;
 import org.springblade.mdm.machinefile.entity.MachineFile;
 import org.springblade.mdm.program.service.ProgramAnnotationService;
-import org.springblade.mdm.program.service.programannotation.AnnotationUtil;
+import org.springblade.mdm.program.service.programannotation.*;
 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.scheduling.annotation.Async;
@@ -34,11 +37,11 @@
 	@Autowired
 	private MachineService machineService;
 	@Autowired
-	private ParamService paramService;
-	@Autowired
 	private ProgramAnnotationService programAnnotationService;
-
-
+	@Autowired
+	private MachineAnnotationConfig annoConfig;
+	@Autowired
+	private AnnotationProcessorHelper annotationProcessorHelper;
 	/**
 	 * 鎵弿鎵�鏈夋満搴婄殑閰嶇疆鐩綍
 	 */
@@ -106,15 +109,11 @@
 		List<Path> files = Files.list(dirPath)
 			.filter(Files::isRegularFile).toList();
 
-		byte[] buffer = new byte[2048];
-
-
+		//byte[] buffer = new byte[2048];
 		List<DictBiz> annotatiionList = programAnnotationService.getAnnotionDictList();
 		//boolean exists;//鏂囦欢鏄惁瀛樺湪浜庢暟鎹簱涓�
 		for (Path filePath : files) {
 			try {
-
-
 				MachineFile mf = readFileToMachineFile(filePath,machine,dirType,annotatiionList);
 
 				machineFileService.refreshFileData(mf);
@@ -142,7 +141,7 @@
 		mf.setName(filePath.toFile().getName());
 		mf.setDirType(dirType);
 		mf.setMachineCode(machine.getCode());
-		mf.setProgramStatus(readProgramStatus(filePath,machine.getMachineGroupCode(),annotatiionList));
+
 
 		BasicFileAttributes attrs = Files.readAttributes(
 			filePath,
@@ -166,7 +165,16 @@
 			log.error("璇诲彇鏂囦欢md5澶辫触",e);
 			throw new ServiceException("璇诲彇鏂囦欢md5澶辫触"+e.getMessage());
 		}
+		try (InputStream inputStream = Files.newInputStream(filePath)) {
+			AnnotationProcessor annoProcessor = annotationProcessorHelper.getProcessor(machine.getMachineGroupCode());
+			AnnotationData annoData = annoProcessor.readAnnotationData(inputStream);
+			mf.setProgramStatus(annoData.getProgramStatus());
 
+			ProgramNameVO progVO = ProgramFileNameParser.parseProgramName(mf.getName());
+			if(StringUtils.isNotBlank(progVO.getLgPart())) {
+				mf.setDeviation(annoData.getDeviation());
+			}
+		}
 		return mf;
 	}
 	/**
@@ -177,24 +185,26 @@
 	 * @return 鐘舵�佺殑鏁存暟涔嬪拰
 	 * @throws IOException
 	 */
-	int readProgramStatus(Path filePath,String controlSystem,List<DictBiz> annotatiionList) throws IOException {
+	public int readProgramStatus(Path filePath,String controlSystem,List<DictBiz> annotatiionList) throws IOException {
 		int programStatus = MachineFile.PROGRAM_STATUS_UNKNOWN;
 		try(InputStream ins = Files.newInputStream(filePath);
-			BufferedInputStream bis = new BufferedInputStream(ins)){
+			BufferedInputStream byteInsStream = new BufferedInputStream(ins)){
 
-			boolean isText= FileContentUtil.isTextFile(bis);
+			boolean isText= FileContentUtil.isTextFile(byteInsStream);
 			if(!isText){
 				return MachineFile.PROGRAM_STATUS_UNKNOWN;
 			}
-			bis.reset();
-			String statusLine = FileContentUtil.readLineAt(ins,ProgramAnnotationService.STATUS_LINE_INDEX);
+			byteInsStream.reset();
+
+			AnnotationProcessor annoProcessor = ProcessorHelper.getProcessor(controlSystem,annoConfig);
+			String statusLine = FileContentUtil.readLineAt(byteInsStream, annoProcessor.getAnnotationProperties().getStatusLineIndex());
 			if(AnnotationUtil.isAnnotation(statusLine,controlSystem,annotatiionList)){
-				String progStatusTxt = programAnnotationService.removeAnnotation(controlSystem,statusLine,annotatiionList);
-				if(ProgramAnnotationService.SQ.equals(progStatusTxt)){
+				String progStatusTxt = AnnotationUtil.removeAnnotation(controlSystem,statusLine,annotatiionList);
+				if(AnnotationUtil.SQ.equals(progStatusTxt)){
 					programStatus = MachineFile.PROGRAM_STATUS_TRY;
-				}else if(ProgramAnnotationService.GH.equals(progStatusTxt)){
+				}else if(AnnotationUtil.GH.equals(progStatusTxt)){
 					programStatus = MachineFile.PROGRAM_STATUS_CURED;
-				}else if(ProgramAnnotationService.PL.equals(progStatusTxt)){
+				}else if(AnnotationUtil.LG.equals(progStatusTxt)){
 					programStatus = MachineFile.PROGRAM_STATUS_DIVIASTION;
 				}
 			}

--
Gitblit v1.9.3