From 5058481100d938bc4680725c3659757a09a2dd8a Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期三, 03 六月 2026 17:50:39 +0800
Subject: [PATCH] 采集器调整:支持文件名匹配查找

---
 src/main/java/com/chinaztt/mes/docx/service/impl/DocxServiceImpl.java |   37 +++++++++++++++++++++++++++++++++++--
 1 files changed, 35 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/chinaztt/mes/docx/service/impl/DocxServiceImpl.java b/src/main/java/com/chinaztt/mes/docx/service/impl/DocxServiceImpl.java
index 8a55cec..fffe1ad 100644
--- a/src/main/java/com/chinaztt/mes/docx/service/impl/DocxServiceImpl.java
+++ b/src/main/java/com/chinaztt/mes/docx/service/impl/DocxServiceImpl.java
@@ -2,6 +2,7 @@
 
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.chinaztt.mes.docx.constant.FieldMatchRuleConstants;
 import com.chinaztt.mes.docx.dto.GetFileDto;
 import com.chinaztt.mes.docx.handler.SerialPortListener;
 import com.chinaztt.mes.docx.pojo.TestBatch;
@@ -35,7 +36,11 @@
         if(StringUtils.equals(".pngInExcel",getFileDto.getFileExtension())){
             fileExtension = ".xls";
         }
-        File file = getFileStart(getFileDto.getFilePath(), fileExtension);
+        String entrustCode = "";
+        if(StringUtils.isNotBlank(getFileDto.getEntrustCode()) && getFileDto.getIsMatchFileName()){
+            entrustCode = getFileDto.getEntrustCode().substring(8);
+        }
+        File file = getFileStart(getFileDto.getFilePath(), fileExtension,getFileDto.getIsMatchFileName(),getFileDto.getFieldMatchRule(),entrustCode,getFileDto.getSampleCode());
         if (file != null && !file.exists()) {
             return Result.failed("鏈煡璇㈠埌璇ヨ矾寰勶細" + getFileDto.getFilePath() + "涓嬪瓨鍦細" + getFileDto.getFileExtension() + "缁撳熬鐨勬枃浠讹紒");
         }
@@ -128,7 +133,11 @@
         return latestFile;
     }
 
-    public static File getFileStart(String filePath, String fileExtension) {
+    public static File getFileStart(String filePath, String fileExtension){
+        return getFileStart(filePath,fileExtension,false,null,null,null);
+    }
+
+    public static File getFileStart(String filePath, String fileExtension,Boolean isMatchFileName,String matchRule,String entrustCode,String sampleCode) {
         List<File> files = FileUtil.loopFiles(filePath);
         List<File> list = new ArrayList<>();
         files.forEach(i -> {
@@ -145,6 +154,9 @@
                     b = i.getName().endsWith(fileExtension);
                     break;
             }
+            if(isMatchFileName){
+                b = matchFileName(i.getName(),matchRule,entrustCode,sampleCode);
+            }
             if (b) {
                 list.add(i);
             }
@@ -152,6 +164,27 @@
         return getLatestFile(list);
     }
 
+    /**
+     * 鍖归厤鏂囦欢鍚嶇О
+     * @param fileName    鏂囦欢鍚嶇О
+     * @param matchRule   鍖归厤瑙勫垯
+     * @param entrustCode 濮旀墭缂栧彿
+     * @param sampleCode  鏍峰搧鍚嶇О
+     * @return
+     */
+    private static Boolean matchFileName(String fileName,String matchRule,String entrustCode,String sampleCode){
+        if(FieldMatchRuleConstants.ENTRUST_CODE_EQUAL.equals(matchRule)){
+            return fileName.equals(entrustCode);
+        }else if(FieldMatchRuleConstants.ENTRUST_CODE_LIKE.equals(matchRule)){
+            return fileName.contains(entrustCode);
+        }else if(FieldMatchRuleConstants.SAMPLE_CODE_EQUAL.equals(matchRule)){
+            return fileName.equals(sampleCode);
+        }else if(FieldMatchRuleConstants.SAMPLE_CODE_LIKE.equals(matchRule)){
+            return fileName.contains(sampleCode);
+        }
+        return false;
+    }
+
     @Override
     public void readXml() {
         XMLFileListener fileListener = new XMLFileListener();

--
Gitblit v1.9.3