From 4c7296d45efe849dc70a3b2e2240c905481a91c9 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期一, 29 九月 2025 17:44:46 +0800
Subject: [PATCH] 工控网涉密网联调
---
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/MachineFileScanService.java | 85 +++++++++++++++---------------------------
1 files changed, 30 insertions(+), 55 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 38b5d53..38ab6d0 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,16 +1,23 @@
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.MachineDirTranslator;
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.machinefile.mapper.MachineFileMapper;
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.springblade.system.pojo.entity.DictBiz;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import java.io.BufferedInputStream;
@@ -32,14 +39,12 @@
@Autowired
private MachineService machineService;
@Autowired
- private ParamService paramService;
+ private AnnotationProcessorHelper annotationProcessorHelper;
@Autowired
- private ProgramAnnotationService programAnnotationService;
-
-
- /**
- * 鎵弿鎵�鏈夋満搴婄殑閰嶇疆鐩綍
- */
+ private MachineDirTranslator machineDirTranslator;
+ @Autowired
+ private MachineFileMapper machineFileMapper;
+ @Async
public void scanMachineFile() {
List<Machine> machines = machineService.getEnableMachines();
for (Machine machine : machines) {
@@ -79,17 +84,17 @@
}
}
+ machineFileMapper.deleteNotUseRecords();
}
-
/**
* 鎵弿鐩綍
* @param machine 鏈哄簥淇℃伅
* @param dirType 鐩綍绫诲瀷
- * @throws IOException
+ * @throws IOException 鏂囦欢鎿嶄綔鍙兘瀵艰嚧鐨勫紓甯�
*/
public void scanDir(Machine machine,String dirType) throws IOException {
- String basePath = MachineFileService.getBasePath(machine,dirType);
+ String basePath = machineDirTranslator.trans(MachineFileService.getBasePath(machine,dirType));
if(basePath == null) {
log.warn("鐩綍绫诲瀷涓嶅尮閰�:{}",dirType);
return;
@@ -103,16 +108,12 @@
List<Path> files = Files.list(dirPath)
.filter(Files::isRegularFile).toList();
- byte[] buffer = new byte[2048];
-
-
- List<DictBiz> annotatiionList = programAnnotationService.getAnnotionDictList();
+ //byte[] buffer = new byte[2048];
+ //List<DictBiz> annotatiionList = programAnnotationService.getAnnotionDictList();
//boolean exists;//鏂囦欢鏄惁瀛樺湪浜庢暟鎹簱涓�
for (Path filePath : files) {
try {
-
-
- MachineFile mf = readFileToMachineFile(filePath,machine,dirType,annotatiionList);
+ MachineFile mf = readFileToMachineFile(filePath,machine,dirType);
machineFileService.refreshFileData(mf);
@@ -128,18 +129,16 @@
* @param filePath 鏂囦欢璺緞
* @param machine 鏈哄櫒
* @param dirType 鐩綍绫诲瀷
- * @param annotatiionList 娉ㄨВ閰嶇疆瀛楀吀 鐢ㄤ簬璇诲彇绋嬪簭鐘舵��
* @return MachineFile 瀹炰緥
* @throws IOException
*/
- public MachineFile readFileToMachineFile(Path filePath,Machine machine,String dirType,List<DictBiz> annotatiionList) throws IOException {
+ public MachineFile readFileToMachineFile(Path filePath,Machine machine,String dirType) throws IOException {
MachineFile mf = new MachineFile();
mf.setTenantId("000000");
mf.setName(filePath.toFile().getName());
mf.setDirType(dirType);
mf.setMachineCode(machine.getCode());
- mf.setProgramStatus(readProgramStatus(filePath,machine.getMachineGroupCode(),annotatiionList));
BasicFileAttributes attrs = Files.readAttributes(
filePath,
@@ -163,54 +162,30 @@
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());
- return mf;
- }
- /**
- * 璇诲彇鏂囦欢涓殑绋嬪簭鐘舵��
- * @param filePath 鏂囦欢璺緞
- * @param controlSystem
- * @param annotatiionList 娉ㄩ噴閰嶇疆瀛楀吀
- * @return 鐘舵�佺殑鏁存暟涔嬪拰
- * @throws IOException
- */
- 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)){
-
- boolean isText= FileContentUtil.isTextFile(bis);
- if(!isText){
- return MachineFile.PROGRAM_STATUS_UNKNOWN;
- }
- bis.reset();
- String statusLine = FileContentUtil.readLineAt(ins,ProgramAnnotationService.STATUS_LINE_INDEX);
- if(programAnnotationService.isAnnotation(statusLine,controlSystem,annotatiionList)){
- String progStatusTxt = programAnnotationService.removeAnnotation(controlSystem,statusLine,annotatiionList);
- if(ProgramAnnotationService.SQ.equals(progStatusTxt)){
- programStatus = MachineFile.PROGRAM_STATUS_TRY;
- }else if(ProgramAnnotationService.GH.equals(progStatusTxt)){
- programStatus = MachineFile.PROGRAM_STATUS_CURED;
- }else if(ProgramAnnotationService.PL.equals(progStatusTxt)){
- programStatus = MachineFile.PROGRAM_STATUS_DIVIASTION;
- }
+ ProgramNameVO progVO = ProgramFileNameParser.parseProgramName(mf.getName());
+ if(StringUtils.isNotBlank(progVO.getLgPart())) {
+ mf.setDeviation(annoData.getDeviation());
}
}
-
- return programStatus;
+ return mf;
}
/**
* 娓呯悊宸茬粡鍒犻櫎浜嗘枃浠剁殑璁板綍
- * @param machine
- * @param dirType
+ * @param machine 鏈哄簥
+ * @param dirType 鐩綍绫诲瀷
* @throws IOException
*/
void clearDeletedRecords(Machine machine,String dirType) throws IOException {
List<MachineFile> machineFiles = this.machineFileService.lambdaQuery().eq(MachineFile::getDirType,dirType)
.eq(MachineFile::getMachineCode,machine.getCode()).list();
- String basePath = MachineFileService.getBasePath(machine,dirType);
+ String basePath = machineDirTranslator.trans(MachineFileService.getBasePath(machine,dirType));
if(basePath == null) {
log.warn("鐩綍绫诲瀷涓嶅尮閰�:{}",dirType);
return;
--
Gitblit v1.9.3