From 9810791a41d381a10451f3e9770cfcfedf98e886 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期五, 22 八月 2025 00:39:34 +0800
Subject: [PATCH] 增加首页搜索接口
---
blade-service/blade-mdm/src/main/java/org/springblade/mdm/task/MachineFileScanTask.java | 106 ++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 93 insertions(+), 13 deletions(-)
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/task/MachineFileScanTask.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/task/MachineFileScanTask.java
index 53a63fd..572b22c 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/task/MachineFileScanTask.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/task/MachineFileScanTask.java
@@ -1,11 +1,13 @@
package org.springblade.mdm.task;
+import com.alibaba.excel.util.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.digest.DigestUtils;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.FileUtil;
import org.springblade.mdm.basesetting.machine.MachineService;
import org.springblade.mdm.basesetting.machine.entity.Machine;
+import org.springblade.mdm.commons.service.ParamService;
import org.springblade.mdm.gkw.programnode.entity.MachineFile;
import org.springblade.mdm.gkw.programnode.service.MachineFileService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -32,19 +34,31 @@
private MachineFileService machineFileService;
@Autowired
private MachineService machineService;
+ @Autowired
+ private ParamService paramService;
// 姣�5绉掓墽琛屼竴娆�
//@Scheduled(fixedRate = 1000000)
//@Scheduled(cron = "0 1 0 * * ?") // 姣忓ぉ涓婂崍0鐐�1鍒嗘墽琛�
- @Scheduled(cron = "0 15 19 * * ?") //test
+ @Scheduled(cron = "0 */5 * * * ?")
+ //@Scheduled(cron = "0 15 19 * * ?") //test
public void executeEvery5Seconds() {
- System.out.println("瀹氭椂浠诲姟鎵ц: " + System.currentTimeMillis());
- scanMachineFile();
+ String networkType = paramService.getParamValue(ParamService.NETWORK_TYPE,ParamService.NETWORK_TYPE_SHEMI);
+
+ if(!ParamService.NETWORK_TYPE_SHEMI.equals(networkType)){
+ //闈炴秹瀵嗙綉锛屾墠鎵弿鐩綍鏂囦欢
+ scanMachineFile();
+ }
+
}
-
+ /**
+ * 鎵弿鎵�鏈夋満搴婄殑閰嶇疆涔嬬洰褰�
+ */
public void scanMachineFile() {
List<Machine> machines = machineService.lambdaQuery().eq(Machine::getStatus,Machine.STATUS_ENABLE).list();
for (Machine machine : machines) {
+
+ //鎵弿鏂伴椈鐣�
try {
scanDir(machine,MachineFile.DIR_TYPE_REC);
}catch(Exception e) {
@@ -60,10 +74,26 @@
}catch(Exception e) {
log.error("TEMP鎵弿鏂囦欢寮傚父,鏈哄簥"+machine.getCode(),e);
}
+
+ //娓呯悊鏁版嵁搴擄紝鍒犻櫎鏂囦欢涓嶅瓨鍦ㄧ殑鏁版嵁
+ try {
+ clearDeletedReccords(machine,MachineFile.DIR_TYPE_REC);
+ }catch(Exception e) {
+ log.error("REC鎵弿鏂囦欢寮傚父,鏈哄簥"+machine.getCode(),e);
+ }
+ try {
+ clearDeletedReccords(machine,MachineFile.DIR_TYPE_SEND);
+ }catch(Exception e) {
+ log.error("SEND鎵弿鏂囦欢寮傚父,鏈哄簥"+machine.getCode(),e);
+ }
+ try {
+ clearDeletedReccords(machine,MachineFile.DIR_TYPE_TEMP);
+ }catch(Exception e) {
+ log.error("TEMP鎵弿鏂囦欢寮傚父,鏈哄簥"+machine.getCode(),e);
+ }
}
}
-
/**
@@ -73,8 +103,6 @@
* @throws IOException
*/
public void scanDir(Machine machine,String dirType) throws IOException {
- //MachineFile.DIR_TYPE_REC
-
String basePath = MachineFileService.getBasePath(machine,dirType);
if(basePath == null) {
log.warn("鐩綍绫诲瀷涓嶅尮閰�:{}",dirType);
@@ -91,10 +119,12 @@
byte[] buffer = new byte[2048];
- boolean exists;//鏂囦欢鏄惁瀛樺湪浜庢暟鎹簱涓�
+ MachineFile existFileInDb;
+ //boolean exists;//鏂囦欢鏄惁瀛樺湪浜庢暟鎹簱涓�
for (Path filePath : files) {
- exists = false;
+ existFileInDb = null;
+ //exists = false;
MachineFile mf = new MachineFile();
@@ -114,7 +144,7 @@
mf.setFileCreateTime(creationDate);
FileTime modifyTime = attrs.lastModifiedTime();
- mf.setFileModifyDate(new Date(modifyTime.toMillis()));
+ mf.setFileModifyTime(new Date(modifyTime.toMillis()));
mf.setFileSize(Files.size(filePath));
try (InputStream inputStream = Files.newInputStream(filePath)) {
// 浣跨敤杈撳叆娴佽鍙栨枃浠跺唴瀹�
@@ -125,19 +155,69 @@
continue;//鏈夐敊璇�,鎺犺繃
}
- exists = machineFileService.fileExists(mf.getName(),mf.getMd5(),machine.getCode());
+ //exists = machineFileService.fileExists(mf.getName(),dirType,machine.getCode());
+
+ existFileInDb = machineFileService.getExistsFile(mf.getName(),dirType,machine.getCode());
System.out.println("鏂囦欢鍒涘缓鏃堕棿: " + creationDate);
} catch (IOException e) {
log.error("璇诲彇鏂囦欢淇℃伅澶辫触",e);
}
- if(!exists) {
+ if(existFileInDb == null) {
machineFileService.save(mf);
}else{
- log.info("鏂囦欢宸插鏋滄帬杩�:{}",filePath.getFileName());
+ log.info("鏂囦欢宸插瓨鍦ㄦ帬杩�:{}",filePath.getFileName());
+ //宸插瓨鍦ㄥ拫鏁淬��
+ existFileInDb.setFileSize(mf.getFileSize());
+
+ existFileInDb.setFileCreateTime(mf.getFileCreateTime());
+ existFileInDb.setFileModifyTime(mf.getFileModifyTime());
+ if(!StringUtils.equals(existFileInDb.getMd5(),mf.getMd5())){
+ //鏂囦欢鍐呭鍙戠敓鍙樺寲浜�,璁剧疆鐘舵�佷负鍒濆鐘舵��
+ existFileInDb.setStatus(MachineFile.STATUS_NORMAL);
+ }
+ existFileInDb.setMd5(mf.getMd5());
+
+
+ machineFileService.updateById(existFileInDb);
+
}
}
+
}
+ /**
+ * 娓呯悊宸茬粡鍒犻櫎浜嗘枃浠剁殑璁板綍
+ * @param machine
+ * @param dirType
+ * @throws IOException
+ */
+ void clearDeletedReccords(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);
+ if(basePath == null) {
+ log.warn("鐩綍绫诲瀷涓嶅尮閰�:{}",dirType);
+ return;
+ }
+ Path dirPath = Paths.get(basePath);
+ if(!dirPath.toFile().exists()){
+ log.warn("鎵弿鐩綍:{} 涓嶅瓨鍦�",dirPath);
+ return;
+ }
+
+ List<Path> files = Files.list(dirPath)
+ .filter(Files::isRegularFile).toList();
+
+ for(MachineFile mf : machineFiles){
+ long findCount = files.stream().filter(filePath -> filePath.toFile().getName().equals(mf.getName())).count();
+ if(findCount == 0){
+ //鏂囦欢澶瑰唴娌℃壘鍒帮紝闇�瑕佸垹闄よ褰�
+ mf.markFileDeleted();
+ this.machineFileService.updateById(mf);
+ }
+ }
+ }
}
--
Gitblit v1.9.3